Implement Track Changes

@stephensanchez please. I'll be on vacation next week, but @caesar2164 and @stvstnfrd will be around and can handle our end of the PR process.

* Creates "TrackChanges" django model, which ties a (submission_uuid,
  scorer_id) pair to a set of edits suggested by peers for a particular
  submission.
* Adds machinery for on-the-fly installation of the New York Times's ICE
  library for collaborative editing, allowing peer assessors to create
  marked-up versions of submissions, which can then be returned to the
  author as feedback.
* Adds machinery for displaying suggested edits to the creator of a
  submission with their scores and other feedback.
* Configurable within Studio on a per-Assessment basis by including a
  URL to the ICE library as part of the assessment definition.
* For additional details, see:
  https://docs.google.com/document/d/18PITJu133sFpDl_B2GCbo2eb0GODcwVmVsktwPQfVSg/edit?usp=sharing

Co-authored-by: Giulio Gratta <giulio@giuliogratta.com>
Co-authored-by: Steven Burch <stv@stanford.edu>
Co-authored-by: Joe Blaylock <jrbl@jrbl.org>
I'm unclear as to what's being done here. We're iterating over all the assessment models and if any single one has track_changes enabled, we set the JS url for the HTML fragment based on that setting? I think there should be a single boolean value for whether or not we track changes, and another value for the entire block for the URL. This way you don't make a typo on one module, and break the feature across the board.