Add student submission reports, management and dashboard functionality

@jrbl If you wouldn't mind taking a look.
```student_submissions``` is the heart of all this work, and it seems relatively nicely self contained. I'd love to see some unit testing of this. Or if unit testing of the whole thing is too hard, maybe it should be decomposed into some utility methods, and those can be unit tested seperately. I'd like to be certain this is bulletproof.

Cases I worry about:
* empty course
* full course without enrollments
* unicode in submissions
* unicode in course information
* problems during state deserialization. For example, what happens when state isn't a valid JSON object?