Fix compiler class initialization to properly deal with super classes

Also moving active parts of compiler_test to be oat tests including
IntMath and Invoke. Added an interface invocation test case to Invoke
test. Changed Compiler to CHECK that it is not used once the
Runtime::IsStarted, forcing some jni_compiler_test to have two phases,
one for compiling before Runtime::Start and one for JNI operations
after the Runtime::IsStarted.

Finally, fixed Class::CanPutArrayElementFromCode by removing
CanPutArrayElement and calling IsAssignableFrom directly.

Change-Id: I52ca4dbc0e02db65f274ccc3ca7468dce365a44e
diff --git a/src/jni_internal_test.cc b/src/jni_internal_test.cc
index 067d36b..b3e5c79 100644
--- a/src/jni_internal_test.cc
+++ b/src/jni_internal_test.cc
@@ -648,6 +648,7 @@
 
 TEST_F(JniInternalTest, GetPrimitiveField_SetPrimitiveField) {
   LoadDex("AllFields");
+  runtime_->Start();
 
   jclass c = env_->FindClass("AllFields");
   ASSERT_TRUE(c != NULL);
@@ -675,6 +676,7 @@
 
 TEST_F(JniInternalTest, GetObjectField_SetObjectField) {
   LoadDex("AllFields");
+  runtime_->Start();
 
   jclass c = env_->FindClass("AllFields");
   ASSERT_TRUE(c != NULL);