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/runtime.cc b/src/runtime.cc
index 99f5e3a..1f6a06a 100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -370,7 +370,7 @@
 void Runtime::RunImageClinits() {
   Class* Field_class = class_linker_->FindSystemClass("Ljava/lang/reflect/Field;");
   CHECK(Field_class->FindDeclaredDirectMethod("<clinit>", "()V") != NULL);
-  class_linker_->EnsureInitialized(Field_class);
+  class_linker_->EnsureInitialized(Field_class, true);
   CHECK(!Thread::Current()->IsExceptionPending());
 }