More Gc statistics and logging

Added a few metrics to Gc performance measurements:
Mean GC throughput, total time spent in Gc, total time spent in allocation code, mean time per allocation.

Slightly optimized object allocation.

Change-Id: Ie68153a7100affafc4a01dab34b341077e754867
diff --git a/src/runtime_support.h b/src/runtime_support.h
index 0d24e48..5a5cdcd 100644
--- a/src/runtime_support.h
+++ b/src/runtime_support.h
@@ -74,7 +74,8 @@
       return NULL;  // Failure
     }
   }
-  if (!runtime->GetClassLinker()->EnsureInitialized(klass, true, true)) {
+  if (!klass->IsInitialized() &&
+      !runtime->GetClassLinker()->EnsureInitialized(klass, true, true)) {
     DCHECK(self->IsExceptionPending());
     return NULL;  // Failure
   }