Add student submission reports, management and dashboard functionality

@jrbl If you wouldn't mind taking a look.
Teeny tiny thing which you can ignore if you want:
If unit tests have a 1-line doc string of the following form, then it will be output when the test fails, making test failure output a little more comfortable.
e.g.:
"""Empty course has short header and no data."""