Added the ability to restart jobs.

Note that this entailed quite a few changes, and the addition of some
tests:

- Jobs now know their own names, which helps logging since the job
  commands are not littered about the logs
- The configuration handler now knows about the 'restart' option (this
  required another test to be added).
- Added RestartRequest, which is used by the termination thread to get
  the main thread to restart a job for it.
- Added a reference to the command queue in both the ChildProcess and
  the associated Skeleton, which is where RestartRequests are pushed.
- Added a FakeService to the test suite to handle job restarting.