Add first cut of keeping a tree of subthreads for both correct joining and killing.

This is now possible:

````
in_thread do
  in_thread do
    loop do
      play 50
      sleep 1
    end
  end
end
````

and will be correctly killed when job is stopped.

TODO: check GC logs for memory leaks here.