Thread.join, GC daemons, suspend daemons on shutdown, and wait for non-daemon threads to exit.

(I've been testing with a modified SystemMethods test that does various thread
operations.)

Change-Id: I3087087546f90c43da7a0e63fae918ff0a6e7005
diff --git a/src/thread.h b/src/thread.h
index f4cc747..de65d42 100644
--- a/src/thread.h
+++ b/src/thread.h
@@ -265,6 +265,8 @@
 
   State SetState(State new_state);
 
+  bool IsDaemon();
+
   void WaitUntilSuspended();
 
   bool HoldsLock(Object*);
@@ -372,6 +374,7 @@
   void SetName(const char* name);
 
   static void Startup();
+  static void FinishStartup();
   static void Shutdown();
 
   // JNI methods