Fix invalid root detection using wrong function to find space from object.

Fixes issue where a check would fail when we have a bad root instead of
returning NULL. This caused us to abort before outputting some of the
information.

Add large object space to DumpSpaces.

Add DumpSpaces calls to most places calling IsHeapAddress.

Change-Id: I34879fbaa3cd4d6589834a71b1069ca0cee9e701
diff --git a/src/gc/mark_sweep.cc b/src/gc/mark_sweep.cc
index e4cb4d6..da6a593 100644
--- a/src/gc/mark_sweep.cc
+++ b/src/gc/mark_sweep.cc
@@ -179,7 +179,7 @@
 
 void MarkSweep::VerifyRoot(const Object* root, size_t vreg, const AbstractMethod* method) {
   // See if the root is on any space bitmap.
-  if (heap_->FindSpaceFromObject(root) == NULL) {
+  if (GetHeap()->GetLiveBitmap()->GetSpaceBitmap(root) == NULL) {
     LargeObjectSpace* large_object_space = GetHeap()->GetLargeObjectsSpace();
     if (large_object_space->Contains(root)) {
       LOG(ERROR) << "Found invalid root: " << root;