Rework task monitor and run_until_complete()
Rework task monitor and run_until_complete()

This fixes issues with starting tasks that immediately finish,
triggering the terminate_on_finish behavior before any other tasks
have had the opportunity to start.  Now, the task monitor is no
longer optional, and handles both the "run forever" use case and
the "run until complete" use case.  When in "run until complete"
mode, the task monitor will immediately ask all tasks to gracefully
stop, but only call terminate() once all tasks have completed.

jreese/tasky