fix valid report listing, and other cleanup of report generation code
This series includes bug fixes and code cleanup:
- fix listing of reports to properly check for report validity
- fix canonicalization of report paths to avoid bad uploads
- make Report.add_tags method public
- a bunch of code cleanup in reports.py
recommend reviewing commits individually
Edited by Jameson Rollins