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.
This is called from TemporaryJobs to determine if a JobPrefixFile is already locked, so it must be public. This is a little awkward though, so I'll submit another commit which cleans this up.