Added a lot of flexibility to GC tracing controllable by conditional comp.
Cleaned up type API and made it effectively isolate type environments, even though it has a shared store.
Test runner tries test-by-test if there's a crash now.
Changed how GC roots work to not use hatrack dicts or the main allocator; they still are lock-free, but basically an array using FAA and are write-once, read many.
Previously marshal'd tables are now reconstructed each run; will re-marshal them at a later date.
Re-did the box implementation to be more clear.
Found some GC roots I wasn't registering.
Since we have finalizers now, we don't make OpenSSL use our GC; saves us from worrying about whether we have enough viz to track pointers.
Cleanup items