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
Merge pull request #126 from spotify/dano/temporary-jobs-monitor

TemporaryJobs: monitor jobs while running tests