Fix to one mark-compact bug: Restore our remembered sets.
More minor fixes to mark-compact. Seems reliable in single-threaded execution, but still problematic with threads.
One more fix to mark-compact: Actually, we cannot yield on pop, because finalizers will fire after the return value has been calculated, so if that return value moves, we're in trouble. Yield on push instead.
Make the final generation use mark-compact collection.
mark-compact is now committed, so remove the patch.