Reduce mark stack / allocation stack / live stack address space usage.

We now have upper bounds on the stack sizes so that we don't run out of
virtual addresses with large heaps.

Rename mark stack to atomic stack, which now takes any data type.

Added behaviour to force GC when the allocation stack becomes too full.

Added a new special map for reserving the oat file address range.

Change-Id: I5169dd98b5f5072ac67637798da50cb8fc68af2b
diff --git a/src/class_linker.cc b/src/class_linker.cc
index 8a655bd..929582a 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -702,6 +702,7 @@
   std::string oat_filename;
   oat_filename += runtime->GetHostPrefix();
   oat_filename += oat_location->ToModifiedUtf8();
+  runtime->GetHeap()->UnReserveOatFileAddressRange();
   OatFile* oat_file = OatFile::Open(oat_filename, oat_filename,
                                     image_header.GetOatBegin(),
                                     OatFile::kRelocNone);