Student training in-flight changes

Gracefully handle changes to the rubric or examples mid-flight.

* Pass requirements to `submitter_is_finished()`, so if an instructor changes the required number of examples, we apply those changes to students who have already started training.  This relies on the workflow API to ensure that students who have already completed training stay completed.

* Add new training examples as students complete them, rather than when students start training.  Theoretically, an instructor could change the example set while a student is training.  If so, the student will start pulling examples from the new set of examples *after* the student completes the current example.

@stephensanchez This includes some changes to the API functions, which will affect your branch.  In particular:
* `create_workflow` is no longer necessary; calling `get_training_example` will implicitly create a new workflow if none exist for the submission.
* `get_workflow_status` --> `get_num_completed` (since the workflow no longer knows in advance how many steps are required).
* `get_training_example` now takes arguments for `rubric` and `examples`.