Centralize all event report-related code.

Previously, this was split across EventSearch and StudyLocation, and I
had a hard time figuring out where I should put things like status
updates.  This commit moves all the event report generation code into a
single class, which I think will be easier to deal with.