Eliminate network jitter from touch input replay

Previously, the VM's svmpd touch handler used message receive timestamps
when re-injecting touch events into the Android framework. This gave ample
opportunity for network jitter to mangle the gesture playback, introducing
skips, jumps, and other undesired behavior.

This patch adds extra client-side timing information to so that the server
can account for the difference in uptimeMilis() between the client and VM.

The client now also sends the batched "Historical" motion updates that
may exist in a MotionEvent. The previous behavior of ignoring these could
contribute to skipping and jumping in gesture playback.

Finally, also added support for the "edgeFlags" field just in case anything
uses those flags for things like "swipe in from edge" gestures. Discussion
online indicate these flags aren't typically used, but just in case...
Check for existing Looper before creating a new one
Fix Looper issues on websocket creation

AppRTCClient was creating a Looper inside the socket connect AsyncTask.
Loopers are bound to a particular thread, so this Looper was getting
bound to the one of the worker threads behind the AsyncTack execution
pool. This would more or less work for a while when disconnecting and
reconnecting user sessions, but eventually the connect task would get
assigned to a worker thread that had been previously used by an earlier
connection and thus already had a Looper assigned. Things would get
weird after this point.

To fix it, this patch moves the web socket 'upgrade' out of the
AsyncTask itself and into the post execute logic for that task. The
network traffic for setting up the SSL socket is still in the background
so Android doesn't complain about networking on the UI thread, and the
websocket lib does it's own threading behind the scenes too. The looper
ends up being created on the main thread in this case, so there's only
ever one of them, and the same one is given to all future connections.

tl;dr Android's threading model is a massive pain.
Fix for MemorizingTrustManager and WebSockets

Previous fix for Looper issues caued a new issue when using the
certificate trust dialog (network on main thread exception).
Moved the WebSocket connection into a HandlerThread instead, which
automatically prepares/quits the Looper and also allows the MTM
to work properly.