Fix for bad user queries in reports

This PR adds a "BadRequestError" exception to the reports module, and catches this exception on dispatch to return a 400 instead of 500.  I'm working on differentiating between the two in the js, but that's still to come.  If you have the occasion to need to raise an exception due to bad requests in the reports module, check it out.  Is there a site-wide version of this I should be aware of?  Should there be?