Dirkjan found a bug!

Since Ruby finalizers are sometimes added after an object is in
the finalizers list, we have to check the objects separately. The
FinalizeObject entity is still moved to a dead list based on the
live-ness of the object itself.

The change to handle cleanup is a revert of a previous change that
was incorrect because we mark all objects in a mature collection.
This is conceptually a bit odd because it sets mark bits in a young
object.