Fixed bug 529: Core Worker failed to reap child in 4.0.1

The real problem here was that, when a reap failed and scheduled a new
reap 5 seconds in the future, it rarely waited the five seconds. This
was because the worker event loop would grab the next event in the
event queue and, if it was for a job to kill a child, would run it
immediately.

This commit adds a check so that when a child process has gone stale,
the kill_job() function is only called if the current time is at or
later than the time for the event in the event queue.