DB: add UserTestResult
DB: enumerate_files
DB: get_from_id_or_create

Add helper functions to lookup, and if necessary, create
SubmissionResults and UserTestResults.
DB: get_submission_results and get_user_test_results

This is a more efficient means than loading each submission or user test
and its results separately.
DB: Add UpdateDB script for task-versioning changes.
grading: Job
grading: get_task_type
grading: get_score_type
grading: ScoreType interface
grading: Fix more places where SubmissionResult must be used.
grading: Add support for dataset previewing and notifying students of changes.
services: update get_submissions to get_submission_results
services: add function to get all to-autojudge datasets for a task
ES: loads of changes
SS: loads of changes
SS: fail-proof against broken scorers and setups

Add immunity against broken scorers.
SS: Send correct datasets to RWS.

 - We only send results for the active dataset to RWS.
 - We also now re-send all results for a task when the dataset is changed.
SS: addition
CWS: loads of changes
CWS: Add immunity against broken scorers.