Report Subsystem changes

Added code for the report subsystem. Most classes have been modified
with design by contract. Need to fix one error with the reports abstract
class, but will look at later. **Forgot to commit user subsystem classes
changes from yesterday, will do so as soon as I get home.