Implement finalization.

Also make System.gc no longer a no-op. This replaces some of the
MemberOffsets exposed by Heap with intention-revealing functions
that we'll want to share between all the actual GC implementations,
but there's still more to be done.

Change-Id: I57ba26c0416fbbfe20142b7b6e27108684add7f9
diff --git a/src/object_bitmap.h b/src/object_bitmap.h
index 964c914..79b4027 100644
--- a/src/object_bitmap.h
+++ b/src/object_bitmap.h
@@ -69,7 +69,7 @@
   void Clear();
 
   bool Test(const Object* obj) {
-    CHECK(HasAddress(obj));
+    CHECK(HasAddress(obj)) << obj;
     CHECK(words_ != NULL);
     CHECK_GE((uintptr_t)obj, base_);
     if ((uintptr_t)obj <= max_) {