Remove task groups

Another in the series of patches to simplify the scheduler.  We no
longer have task groups, or explicitly allocated task instances.  Back
to the original interface, where you pass the task function and
parameters directly to `flt_run` (or any other functions that creates a
new task).

Task groups are replaced by "afters", which encapsulates the "after
task" (which will be scheduled when a group of tasks finish), and all of
the internal state necessary to detect when those tasks finish.  The
group of tasks is no longer defined by an explicit `flt_task_group`
object; instead, it's defined implicitly, as the collection of tasks
that all have the same `after` link.