feature/user_tracking

added tracking for when students encounter intervention points (currently stored in db)
moves other relevant code to new analytics module
adds button to download this data for a course
This is just writing CSV files in memory, so there are pretty few opportunities for error compared to csv readers.  I'm pretty sure since we are writing lists rather than dicts, it won't raise an exception.  That said, any exception that is raised just ends as a 500 on the download data page.