Implements sensors emulation using a connected Android device

There are three major things in this CL:
1. Abstract a connection with an Android device that is connected to the host via
   USB, and there is a TCP port forwarding to this device via 'adb forward' command.
   This abstraction is implemented in android/android-device.*
2. A client for android device API that talks to an app on the connected device that
   provides values for sensors available on the device. This is implemented in
   android/sensors-port.*
3. Changes to the sensor emulation code in android/hw-sensors.c to use sensors port
   (when available) for sensors emulation.

Change-Id: I12901e8db6b6a6262fc1703ed96a9f714335d666
diff --git a/android/async-utils.h b/android/async-utils.h
index 93148c1..6d460c2 100644
--- a/android/async-utils.h
+++ b/android/async-utils.h
@@ -137,6 +137,7 @@
     size_t    buffsize;
     size_t    pos;
     LoopIo*   io;
+    char      eol;
 } AsyncLineReader;
 
 /* Setup an AsyncLineReader to read at most 'buffsize' characters (bytes)
@@ -155,6 +156,17 @@
                           size_t           buffsize,
                           LoopIo*          io);
 
+/* Sets line terminator character for the reader.
+ * By default, asyncLineReader_init will set EOL to be '\n'. Sometimes it's more
+ * convenient to have '\0' as line terminator, so "line" reader easily becomes
+ * a "string" reader.
+ */
+AINLINED void
+asyncLineReader_setEOL(AsyncLineReader* alr, char eol)
+{
+    alr->eol = eol;
+}
+
 /* Try to read line characters from 'io'.
  * Returns:
  *    ASYNC_COMPLETE: An end-of-line was detected, call asyncLineReader_getLine