Kill child processes on build teardown

This adds functionality in the teardown_build flow on the slave that
will kill any child processes that are still executing. This is
important because if the slave is terminated, we don't want it to
leave orphaned processes that are still doing real work.

This has no effect on the teardown that is initiated by the master
when all subjobs are complete -- at that point all child processes
have ended normally. This only has an effect when the slave is
terminated while executing a job.
Yeah good question -- I might add my reasoning as a comment. The reason is that just because a command exits with a non-zero exit code, it doesn't mean it's an error in the ClusterRunner system. In fact, it may be completely normal that this happens. 

An example is in the Git project type, in `_setup_build()` we execute a command (`git rev-parse`) to determine if the current directory is already a repo, and if it exits with a non-zero exit code we go ahead and clone the repo. I think when it shows up as an error or warning in the logs it is kind of misleading when you're debugging something because it is completely normal for that command to "fail".