Split off DT test into a separate file
Allow entry via gg.wait(), part 1

The idea is to allow entry via gg.wait() as well, so that we can use
gg within existing generator contexts.  (We'll have to figure out how to
determine the caller in that case, as otherwise Dispatcher.current()
will be null (or, worse, some other random value).
Multi-run test, random wait

Added a test to see if we can now resolve multiple gg.run() invocations
in parallel.

To test this more thoroughly, foo() now waits for 4-20ms.
Only run loop if it's not already running

We don't need multiple loops running at the same time.
Multiple error scenarios

We want error handling to work regardless of how many errors are thrown
- right now, these multiple error scenarios break the dispatcher, which
is not good.
Fix double-run in multiple error scenario

This doesn't fix the problem with multiple gg.run() invocations, which
step on each others' feet in setting Dispatcher._current - we can't set
this in gg.run()!
Prevent re-creation of CallGraphNodes using .setWaitIds()

so that we can re-use the same nodes.  This will make it easier to keep
track of parents.