GC rewrite
- new object/type encoding
- tiny immix space, normal immix space, freelist space, and immortal space have different encoding
- a global type table
- rewrote freelist allocator
- support heap growth
- reduced gc initilaisation time
There are some left-over work recorded here: #93