Reportable

reports.py:

* ReportableInterface for dynamic discovery of reportable pageblocks
Note: I chose to use the new Python ABC abstract classes. I am not opposed to switching back to more conventional duck-typing if this seems too fussy.

* ReportColumnInterface for the individual bits of reporting data

* base PagetreeReport class.

Tests are implemented in test_reports.py. I have the code fleshed out in django-quizblock and MeaningfulConsent as well, but figured I'd get the base classes reviewed first before proceeding.