Add student submission reports, management and dashboard functionality

@jrbl If you wouldn't mind taking a look.
So, this outputs the csv in the current working directory? That's not great. It would be nice to use tempfile.mkdtemp() or similar to put this someplace safe, and then output that location at the end of the job after we're sure everything worked, or clean it all up if we figure out that it didn't.

I can easily imagine wanting a command-line flag to decide where to save the output, and if given, we should put the output there instead, of course. But CWD is almost certainly not ideal.

I can also imagine wanting a command line flag to upload the output to an S3 bucket, but that is probably out of scope.