Reap runner and sub-slave processes in slaves.

When running a command, the runner process correctly waits for
termination of that command, but the slave also needs to wait for the
runner process. This adds a set of child pids that get waitpid'd
on (with WNOHANG) every time a command is read.
Kill the zeusclient only if something went wrong

Previously, the runner would kill the client process at_exit - this
introduced a race condition where the client would sometimes get the
async TERM signal before it could read the exit status, and exit with
a failure status.

While the reasoning behind killing the client is sound (if the runner
dies without the client noticing, the client could hang around
forever), it should only happen if there's an exceptional condition.
Merge pull request #272 from antifuchs/better-subprocess-handling

Better subprocess handling