Merge branch 'feature/finalize-reporting'
Introduce ReportReader and FileReportReader.

ReportReader is a general-purpose log interpreter which is fed reports
(events) and then reconstructs the state of gwf. FileReportReader just
feeds each line from a log file to the ReportReader.
Convert timestamps to objects when reading entries.
Forgot to remove this earlier.
Make reporter write to local storage until the report is finalized.
Make schedule a frozen set.
Add event to ProcessScheduler which tells when scheduling is stopped.
When workflow is stopped, finalize report.
Write lock file containing host of the workflow to shared storage.
Inject process scheduler into task scheduler.
A bit of logging and error checking.
Use -t when passing targets to gwf-local.
Let gwf-local inject dependencies into the TaskScheduler.

This includes the environment, which is now obtained through the
get_environment() function. It automatically decides which environment
to return.

This commit also introduces the Event type which is used by Tasks to
emit events when a file transfer is started, succeeds or fails. Thus,
Workflow is now completely free of reporting and environment code.
Use the new Event type in ProcessScheduler.
Move dependency checking into separate function.
Use correct way to remove stuff from a set.
Naming.
Unnessecary assignment.
Remove unused EVENT_NAMES list.
Write stdout and stderr to individual files on local storage.