TemporaryJobs writes state to disk so jobs can be cleaned up by subseque...

...nt runs.

If a run of TemporaryJobs is killed off while jobs are still deployed,
they will be left running. This can lead to a lot of abondoned jobs still
running. To prevent this, TemporaryJobs now genereates a random string for
run, and uses this as a prefix for each job name. This string is written
to disk as the name of file in /tmp/helios-temp-jobs. When TemporaryJobs
starts, it will read all files in this directory, and delete all jobs
which start with the prefix. If TemporaryJobs runs to completion, and
all jobs are undeployed successfully, the temporary file will be deleted.
I usually inline `checkNotNull` into the assignment. This makes is easier to see that the null check hasn't been omitted for some assignment. Also provide variable names to `checkNotNull`.

```java
this.file = checkNotNull(file, "file");
...
```