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.
I don't think that this process is easily modeled by Guava Service. The
approach taken in this PR seemed the most reasonable under these
circumstances, but something better might be possible if one wouldn't use
Guava Service.
On Sep 29, 2014 8:54 PM, "Marc Bruggmann" <notifications@github.com> wrote:

> In helios-services/src/main/java/com/spotify/helios/agent/Supervisor.java:
>
> >        // Stop the runner
> >        if (runner != null) {
> > -        runner.stopAsync().awaitTerminated();
> > +        runner.stop();
>
> We tried that. The reason I kept it this way is because otherwise, we'll
> not tell listeners about the exit code (since the run method will be
> interrupted).
> If we do it this way, docker will stop (or eventually kill) the container,
> letting the run method finish normally without ever throwing the
> InterruptedException.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/spotify/helios/pull/207/files#r18174957>.
>