Add student submission reports, management and dashboard functionality

@jrbl If you wouldn't mind taking a look.
Actually, I guess that would be
```
for component, unit, subsection, section in every_component_in(course):
    # do stuff
```
because the various levels above component are mutating as we go, and we might want access to them.