moved the GC flag to the low 2 bits of type pointer

Pointers are implementation defined, so using the low bits of a pointer
is not necessarily portable, safe, or smart... but it's commonly done
(Boost, Ruby, etc.) and it shrinks all object instances by 8 bytes!

Note: it is now invalid to access an object's type struct directly.
Use the TYPEOF(object) macro.