Print out number of threads in __describe_threads
Allow with_fx gc thread's promise to be delivered multiple times:

* It's not a problem if the parent fx thread both completes and is killed
  at very similar times. All that matters is the GC thread is allowed to 
  continue.
Simple improvement to promise to help debugging: now prints out vals
Move job teardown code into a separate thread:

* teardown code now executes if main job thread is killed