Fix segv in indirect reference table dump.

ReferenceTable::Dump is common code but can't handle NULLs. Process
IndirectReferenceTable's use so that it doesn't pass NULLs for removed
slots.
Improve unit tests.

Change-Id: Ia41375f8f2ecc907ceda8c39d146ce6ef607fb08
diff --git a/src/indirect_reference_table.cc b/src/indirect_reference_table.cc
index 958531d..9bb6edc 100644
--- a/src/indirect_reference_table.cc
+++ b/src/indirect_reference_table.cc
@@ -318,6 +318,12 @@
 void IndirectReferenceTable::Dump(std::ostream& os) const {
   os << kind_ << " table dump:\n";
   std::vector<const Object*> entries(table_, table_ + Capacity());
+  // Remove NULLs.
+  for (int i = entries.size() - 1; i >= 0; --i) {
+    if (entries[i] == NULL) {
+      entries.erase(entries.begin() + i);
+    }
+  }
   ReferenceTable::Dump(os, entries);
 }