Implement reference processing for the copying collector.

When scavenging a reference object the scavenging of the referent
field is now deferred until after hard-reachable objects have been
scavenged.  The reference processing routines were lifted from the
mark and sweep collector.  The interface routines are still stubbed
out and reference processing occurs in the top-level scavenging
routine.

The use of subclasses of Object has been rationalized as part of this
change.  In various places what are logically down-casts have been
eliminated.  This caused lots of uneccesary casting.  One day this
code should just be written in a more expressive language.

Change-Id: I937f494e8be42bd66357e301f7158eeaa4f69c10
1 file changed