Various runtime/JNI related fixes.

NewObject returns NULL if exception is thrown in constructor.
Allocate the peer then call constructor to ensure peer_ field is
initialized.
Change thread state for AddFinalizer and pass current thread through for
ease.

Change-Id: Ib578b6d44b08aef10fde5d8bc27cc6a2acbf6fae
diff --git a/src/runtime_support.cc b/src/runtime_support.cc
index 3c10fc3..9653d28 100644
--- a/src/runtime_support.cc
+++ b/src/runtime_support.cc
@@ -44,7 +44,7 @@
   FinishCalleeSaveFrameSetup(self, sp, Runtime::kRefsOnly);
   Class* c = o->GetClass();
   if (UNLIKELY(c->IsFinalizable())) {
-    Heap::AddFinalizerReference(o);
+    Heap::AddFinalizerReference(self, o);
   }
   /*
    * NOTE: once debugger/profiler support is added, we'll need to check