Student Unit Testing Feature

Resolve #1993 and resolve #1655

Summary of changes:
* Unit testing feature that allows students to engage with a sequence of exercises, without feedback and a fixed set of random seeds.
* AttemptLog to record each attempt in the unit test (extensible to normal exercises as well).
* TestLog records current student progress in Test
* Each AttemptLog optionally CharFields onto the title of the test (currently loaded from a JSON file).
* URL for test is currently the filename of the test