Debugging output.
Support multiple end targets.
Introduce --all flag to run all end targets.
Add test for auto detection of end targets.
Move auto detection of end targets to method.
schedule no longer returns a set of the scheduled tasks, but now just returns the schedule.
Only wait for a dependency to finish if that dependency was actually scheduled.

If the dependency wasn't scheduled, its output files already exist (as
explained in the comments).
Remove everything that uses should_run.
gwf-local doesn't need targets as a space separated list.
Only run targets which are necessary to run to produce the output files.

Basically, if an output file is changed on one branch of the workflow, we
do not wish to run the entire workflow again. Thus, we figure out which
targets depend on the changed file and only run those. If a target has been
checkpointed on the branch, we also check that the output files of the
target are newer than all files generated by the dependencies of the target.
Funky workflow example for testing purposes.
Small error in funky monkey example.
Fix bug where dependency doesn't isn't checkpointed nor an end target.
Remove unnecessary check for file existence.
No documentation is better than wrong documentation.
Save full path of workflow file in workflow object.
Added Reporter and FileReporter to perform reporting using JSON.

The FileReporter knows where to move the log file when it is finalized.
Reporter doesn't need to know about workflow id.
Introduce environments.

Environments collect and store everything needed for a workflow to run.
That is, path of the scratch dir, config dir, job id, and the nodes
available.
Merge branch 'feature/environment' into develop