More SIGQUIT detail, earlier exit in AttachCurrentThread, handling recursive aborts, and reporting debug/optimized builds.

Change-Id: I932b49a8e92a91e340b4d98b8771dd4a41b61229
diff --git a/src/intern_table.cc b/src/intern_table.cc
index 5de70d8..a848761 100644
--- a/src/intern_table.cc
+++ b/src/intern_table.cc
@@ -15,6 +15,13 @@
   return strong_interns_.size() + weak_interns_.size();
 }
 
+void InternTable::DumpForSigQuit(std::ostream& os) const {
+  MutexLock mu(intern_table_lock_);
+  os << "Intern table: " << strong_interns_.size() << " strong; "
+     << weak_interns_.size() << " weak; "
+     << image_strong_interns_.size() << " image strong\n";
+}
+
 void InternTable::VisitRoots(Heap::RootVisitor* visitor, void* arg) const {
   MutexLock mu(intern_table_lock_);
   typedef Table::const_iterator It; // TODO: C++0x auto