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.
Introduce youngest and oldest output age properties of targets.
Only schedule tasks that need to be run.

:D