Jobs and tasks

Change Job definition as previously discussed: Job now means a collection of identical Tasks.

Also, change the semantics of job scheduling to make it the true atom of the scheduler.
It looks like this is more of a fake than a mock.  (Fakes being minimal implementations that don't necessarily do anything useful, and mocks being objects that only respond in precisely specified ways, usually instrumenting calls in some way.)