Reporting API Framework

Details the beginnings of a Report API framework.

ConsumerStatusReport will get another rev after this is merged in and currently returns static data.

Please focus how reports will be created. Need to make sure this is pretty straight forward and relatively easy to do.

NEED TO BE DONE, NOT IN THIS COMMIT
* Exceptions and mappers need to be merged into candlepin-common so that they can be reused here.
* Currently ReportParameters are purely for providing parameter info when requesting report details -- It would be nice for them to contain validation code for each so that we wouldn't need to implement a validation method.
> It looks like these are being used in a map of Key -> Report, any reason not to bind that way? It would require either an annotation with the target string value, or a static method/string to get the type. Doens't make a great deal of difference.

We could -- we'd have to use a static key for the report. I was leaving that up to the factory so that it could just pull the key from the Report classes. If you feel strongly about your suggestion, I can make the change.