Restart children only once their parents have exited

This should prevent fast children from trying to spawn from parent
that haven't yet realized that they need to restart. This would
sometimes cause the newly-spawned child to be forked from the wrong
code base, and sometimes caused the child to become unresponsive &
stuck in booting/connecting states.
Aggregate file changes that happen within an interval

AKA, the "git checkout" scenario: If many files change at the same
time, this should ensure that the processes get restarted only once,
at the end of the checkout. This should reduce the gettting-wedged
potential considerably for large process (and file) trees.

* Move file change code into its own module outside zeusmaster and
  aggregate all changes that happen within a configurable interval of
  the first.
* Add restarter.FileChangeWindow variable (defaulting to 300ms) that
  controls how long to wait for all file changes to come in.
* Add --file-change-delay command line option, document it and --log
  in the man page.