A trait for owned types that can be traced by the garbage collector. This should be implemented
by any type that will hold references to GC managed objects.
A trait for types that are pointers to GC objects. This is a separate trait from Trace because
pointers will need to be updated during garbage collection (with the GcMoveable trait). Derive
Trace will not handle use GcMoveable to move the object to the new space, so the pointer
will not get updated. This trait is used by the Slot type to update pointers during garbage
collection.