Initialize the rest of libcore's native code.

This native code requires NewGlobalRef, so this patch also implements
NewLocalRef/DeleteLocalRef, NewGlobalRef/DeleteGlobalRef, and
NewWeakGlobalRef/DeleteWeakGlobalRef.

(The assembler change is because "math.h" also defines OVERFLOW. A slight
change in #include ordering caused the names to conflict.)

Change-Id: Ifbf3b532ec3b0896bd7507d2881c6b77b64f01e7
diff --git a/src/thread.h b/src/thread.h
index 71fbd48..054a4cd 100644
--- a/src/thread.h
+++ b/src/thread.h
@@ -41,11 +41,11 @@
   static Mutex* Create(const char* name);
 
  public:  // TODO: protected
-  explicit Mutex(const char* name) : name_(name), owner_(NULL) {}
-
   void SetOwner(Thread* thread) { owner_ = thread; }
 
  private:
+  explicit Mutex(const char* name) : name_(name), owner_(NULL) {}
+
   const char* name_;
 
   Thread* owner_;