Multiple jobs per fork

* Worker pre-forks, child reserves jobs
* Improved signal handling 
* Child terminates when parent terminates
* Parent propagates signals to child
* Mark jobs as failed when child dies unexpectedly