minor: tweak the async version to set the logger
minor: fix a bug in where setLogger happens.
minor: tweak to effect signatures
WIP: Continuing working on switching to asyncs, and now switching the Logger
to use a different quiescence-detection mode.

In particular, this commit dumps the [known-unsafe] WaitTids method.
This commit also drops old code for forking workers with forkWithExceptions,
which was now confirmed to cause major problems in the testing framework.

With the loss of WaitTids, it was possible to push through a refactor:
  * logger field is no longer maybe
  * initLogger gets folded into Sched.new

Unfortunately, closing the logger hangs with the new WaitNum method.  It needs
to be debugged; it's now spinning in a backoff loop.  Warning: this WIP commit
includes a bunch of junk debugging messages marked with TEMP:.
Minor: finish ripping out WaitTids
minor refactor: pull out the coordinator thread to a top level def
BUGFIX for printLoop. It wasn't polling shutdownFlag enough.
Oops, putting the scheduler chatter through the logger causes problems.
And it wasn't meant to go there anyway.
WIP: minor fixes.  We have a significant problem when dbgScheduling is
turned on and dbg messages below level 4 are enabled, because some
of these are launched before/after all workers are running, and thus the WaitNum
strategy will be broken.
WIP: Fix one egregious bug in WaitNum.  AddRemoveTests v3 works on one thread, can deadlock on multiple still.
Identified new bug (issue #70): the final continuation of the main worker
thread is getting duplicated.

This causes deadlock, because the final putMVar can only go through once.