User configurable reports

the plan is to pilot/QA on this on prod so I'm putting it out for code review now. I'm guessing it's easiest to review as a whole, though the commits should represent ~atomic actions.

I think it's good to merge whenever code review passes.
it seems like it could. for all feedback on `testreport` i'm going to let @esoergel and @snopoke decide what to do with it. my inclination would be to delete this class entirely since user configurable reports provides a better example of using their new framework but I didn't want to step on their toes by removing it. if you guys are ok with that i'll get rid of it.