Why are we subclassing `Model` (and thus making new tables), when we're not persisting anything to the database?

After reading through some of the Reports, I don't think they should be models. It feels like there should just be a couple of smaller objects at work:

1. A `Report` object that has a method that returns the field names, and another method that returns an iterable of field values (so does the looping itself and does `yield`).
2. A `ReportCSVOutput` (or some better name) that takes a report and some args about where to dump things.