The LibGC container and visitor tests share one heap per test binary.
A function-local static heap runs its destructor during C++ static
teardown. That makes sanitizer-only results depend on process shutdown
ordering.
Use NeverDestroyed for these process-lifetime test heaps. This matches
the intended lifetime and avoids destructor-time GC work during final
LSan checking.
This requires the Variant to contain at least one visitable type.
For example, requiring them all to be visitable wouldn't allow types
such as `Variant<Empty, GC::Ref<Document>>`.