Add semispace copying gc
Handle recursive types
Merge branch 'gc'