Port server core to Android

 * Android libutils locks and threads
 * Add Android.mk for building with AOSP
 * Add logger sink for Android
 * Regenerate Android.mk when CMake is run
diff --git a/common/os/Thread.cxx b/common/os/Thread.cxx
index 2b08dbf..f3e5b73 100644
--- a/common/os/Thread.cxx
+++ b/common/os/Thread.cxx
@@ -18,6 +18,9 @@
 
 #ifdef WIN32
 #include <windows.h>
+#elif defined(__ANDROID__)
+#include <functional>
+#include <utils/Thread.h>
 #else
 #include <pthread.h>
 #include <signal.h>
@@ -31,12 +34,33 @@
 
 using namespace os;
 
+#if defined(__ANDROID__)
+namespace os {
+class AndroidThread : public ::android::Thread {
+public:
+  AndroidThread(std::function<void()> worker) : mWorker(worker) {}
+
+  virtual bool threadLoop() {
+    try {
+        mWorker();
+    } catch(...) {
+    }
+    return false;
+  }
+private:
+  std::function<void()> mWorker;
+};
+};
+#endif
+
 Thread::Thread() : running(false), threadId(NULL)
 {
   mutex = new Mutex;
 
 #ifdef WIN32
   threadId = new HANDLE;
+#elif defined(__ANDROID__)
+  threadId = new AndroidThread(std::bind(&Thread::worker, this));
 #else
   threadId = new pthread_t;
 #endif
@@ -46,6 +70,9 @@
 {
 #ifdef WIN32
   delete (HANDLE*)threadId;
+#elif defined(__ANDROID__)
+  ((AndroidThread*)threadId)->requestExit();
+  delete (::android::Thread*)threadId;
 #else
   if (isRunning())
     pthread_cancel(*(pthread_t*)threadId);
@@ -63,6 +90,8 @@
   *(HANDLE*)threadId = CreateThread(NULL, 0, startRoutine, this, 0, NULL);
   if (*(HANDLE*)threadId == NULL)
     throw rdr::SystemException("Failed to create thread", GetLastError());
+#elif defined(__ANDROID__)
+  ((AndroidThread*)threadId)->run(NULL);
 #else
   int ret;
   sigset_t all, old;
@@ -96,6 +125,12 @@
   ret = WaitForSingleObject(*(HANDLE*)threadId, INFINITE);
   if (ret != WAIT_OBJECT_0)
     throw rdr::SystemException("Failed to join thread", GetLastError());
+#elif defined(__ANDROID__)
+  ::android::status_t ret;
+
+  ret = ((AndroidThread*)threadId)->join();
+  if (ret != ::android::NO_ERROR)
+    throw rdr::SystemException("Failed to join thread", ret);
 #else
   int ret;
 
@@ -107,9 +142,13 @@
 
 bool Thread::isRunning()
 {
+#if defined(__ANDROID__)
+  return ((::android::Thread*)threadId)->isRunning();
+#else
   AutoMutex a(mutex);
 
   return running;
+#endif
 }
 
 size_t Thread::getSystemCPUCount()