Yeah, as specified right now there is a manual step to reschedule grading tasks after classifiers are trained.

I like the idea of automatically scheduling a regrading task after a training task completes.  At first, I was worried this might cause a race condition, but if we add the assumption that task queues are FIFO, then post-training grading tasks would get added to the queue AFTER any grading task with a null ClassifierSet.  And since grading tasks are idempotent, it's okay for both to run.

We'll still need to deal with a spike in grading tasks, but I think we'd need to handle that anyway (for example, to handle lots of submissions made near a deadline).