Fix a thread suspend timeout, and improve the diagnostics for thread suspend timeouts.

I still needed gdb to understand this, but when we dump _native_ stacks, the
additional diagnostics here will be more helpful. (They're somewhat helpful
anyway, in that they let you see the state all threads are in. Also, in a
started runtime rather than the compiler, threads will have informative managed
stacks.)

Also make the apparent duplication in the dex2oat timings clearer, and only
include time spent on resolving strings if we resolved any strings.

Change-Id: Icd469d9b085171ebb2dede2afb5140387cd3240c
diff --git a/src/thread_list.h b/src/thread_list.h
index eb08401..02357fc 100644
--- a/src/thread_list.h
+++ b/src/thread_list.h
@@ -32,6 +32,7 @@
   ~ThreadList();
 
   void Dump(std::ostream& os);
+  void DumpLocked(std::ostream& os); // For thread suspend timeout dumps.
   pid_t GetLockOwner(); // For SignalCatcher.
 
   // Thread suspension support.