ART: Clean up includes.

Reduce dependencies to improve incremental build times.
Break up circular dependency involving class_linker-inl.h.

Change-Id: I4be742c5c2b5cd9855beea86630fd68aab76b0db
diff --git a/runtime/base/arena_allocator.cc b/runtime/base/arena_allocator.cc
index 59d38ad..b53fa84 100644
--- a/runtime/base/arena_allocator.cc
+++ b/runtime/base/arena_allocator.cc
@@ -20,6 +20,7 @@
 
 #include "arena_allocator.h"
 #include "logging.h"
+#include "mem_map.h"
 #include "mutex.h"
 #include "thread-inl.h"
 #include <memcheck/memcheck.h>
@@ -141,6 +142,10 @@
   size_ = map_->Size();
 }
 
+MemMapArena::~MemMapArena() {
+  // Destroys MemMap via std::unique_ptr<>.
+}
+
 void MemMapArena::Release() {
   if (bytes_allocated_ > 0) {
     map_->MadviseDontNeedAndZero();
diff --git a/runtime/base/arena_allocator.h b/runtime/base/arena_allocator.h
index 3a86b61..ab5968c 100644
--- a/runtime/base/arena_allocator.h
+++ b/runtime/base/arena_allocator.h
@@ -22,7 +22,6 @@
 
 #include "debug_stack.h"
 #include "macros.h"
-#include "mem_map.h"
 #include "mutex.h"
 #include "utils.h"
 
@@ -33,6 +32,7 @@
 class ArenaAllocator;
 class ArenaStack;
 class ScopedArenaAllocator;
+class MemMap;
 class MemStats;
 
 template <typename T>
@@ -166,7 +166,7 @@
 class MemMapArena FINAL : public Arena {
  public:
   explicit MemMapArena(size_t size, bool low_4gb);
-  virtual ~MemMapArena() { }
+  virtual ~MemMapArena();
   void Release() OVERRIDE;
 
  private: