Added auto-restarting functionality.

This required adding a new value to the configuration file, as well as
adding a new event type to the protocol and adding restart handling to
the supervisor.

Two things concern me:

- The necessity of wrapping up access to ChildProcess.child_pid. This
  wasn't an issue before, and though I suppose it is necessary (given
  that more than one thread interacts with that value), it seems a bit
  strange that that issue crops up now.
- The addition of the sleep hack to the signal-test test. Perhaps this
  should be on all the tests, but it appears to be a fluke of some sort
  (and may not really be necessary).
Added throttling to the restart machinery.

This allows JobMon to prevent programs from entering restart loops, and
instead forces them to wait a while if they die too quickly. The timeout
and throttle threshold cannot be changed right now, but I'll probably
add config options for those soon.

Also, the exit-immediatley test script was changed to avoid tripping the
throttling mechanism (which currently throttles a script if it has died
within the past 5s, delaying it by 15s).