Header file clean up.

Remove runtime.h from object.h.
Move TypeStaticIf to its own header file to avoid bringing utils.h into
allocator.h.
Move Array::DataOffset into -inl.h as it now has a utils.h dependency.
Fix include issues arising from this.

Change-Id: I4605b1aa4ff5f8dc15706a0132e15df03c7c8ba0
diff --git a/runtime/mirror/array.h b/runtime/mirror/array.h
index 521d7e7..12bec89 100644
--- a/runtime/mirror/array.h
+++ b/runtime/mirror/array.h
@@ -64,13 +64,7 @@
     return OFFSET_OF_OBJECT_MEMBER(Array, length_);
   }
 
-  static MemberOffset DataOffset(size_t component_size) {
-    DCHECK(IsPowerOfTwo(component_size)) << component_size;
-    size_t data_offset = RoundUp(OFFSETOF_MEMBER(Array, first_element_), component_size);
-    DCHECK_EQ(RoundUp(data_offset, component_size), data_offset)
-        << "Array data offset isn't aligned with component size";
-    return MemberOffset(data_offset);
-  }
+  static MemberOffset DataOffset(size_t component_size);
 
   void* GetRawData(size_t component_size, int32_t index)
       SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {