TemporaryJobs: monitor jobs while running tests

Fail the test if a job fails during the test run. We do this by running
the actual test on a separate thread, while the main thread polls for
job status, throwing an AssertionError if they've failed.
TemporaryJobs: fix executor cleanup on job failure

* Run after() and before() on main thread instead of test thread.
* call after() in a finally to ensure that the executor is terminated.
restore lost newline
TemporaryJobs now honors the HELIOS_HOST_ADDRESS env var

HELIOS_HOST_ADDRESS is the IP address we should use to reach the host, instead of
the hostname. This is used when running a helios cluster inside a VM, and the containers
can be reached by IP address only, since DNS won't be able to resolve the host name of
the helios agent running in the VM.
Merge pull request #125 from spotify/rculbertson/temp-job-visible-ip

TemporaryJobs now honors the HELIOS_HOST_ADDRESS env var
Merge pull request #126 from spotify/dano/temporary-jobs-monitor

TemporaryJobs: monitor jobs while running tests
tests: Only pull busybox if it not found locally

We docker pull busybox before each test, but this can be slow in a shared
build environment. As a workaround, only pull if the image doesn't exist
locally.