Stop running containers instead of killing them on undeploy

When Helios stops a job, it should not be `SIGKILL`ed. The job should get a chance to clean up, by getting a `SIGTERM`, and only be killed after some time. This change set tries to address that problem.
Generally agreed, but I think in this case it appears to be more of a problem of conflation of two things that happened to happen at the same time.  Anyway, as long as the `runner` gets it's `stopAsync` method called (however that happens) reliably at some point so we don't leak threads, I'm happy.  Maybe TaskRunner should call stopAsync at the end of `stop()`?