Generational behavior for the garbage collector

Same as #5227 but living in this repo & squashed.

Since `finalizer_table` was removed, I take it `GC_VERIFY` is broken right now? Also would be better not to repeat this code.