Initial add of empty background service

Change-Id: I7ed5f5dbc0d8d02000714466b1d32be2b0b0b0f7
Updated UI elements for background service

Changed notification icons.
Changed flow of session service.
Added font color indicators and a "stop" context menu option in
ConnectionList to view and control a running session service.
Reorganized code in SessionService.
Updated README to address configuration

Added Configuration section to README, with three sub-sections:
Server Trust, Performance Instrumentation, and Sensor Data.
Fixed socket management issue

If a client connected to a server, then quickly exited the activity
before the socketConnect async task completed, it would cause leave
the socket open indefinitely (which affected the proxy server
negatively).
Added a failsafe in socketConnect completion step to check if the
activity is finishing; if so, it disconnects and shuts down,
otherwise it continues as normal.

Change-Id: I5820a18c54da168663e5cb7cc8897bd39ffa095c
Use all available means to hide the local nav bar

Take advantage of the newer APIs in JB and KK for hiding the nav bar.
In particular, it will use the new "Immersive" mode added in kitkat
(details: https://developer.android.com/training/system-ui/immersive.htmlo)
if possible. Does not yet scale the video to cover the whole screen even if
using the kitkat mode.

Change-Id: I6ebf0a1ae29dad5c69abec1cad31fec9d4625af8
Improve touch responsiveness by setting TCP NO DELAY

Disabling Nagle's algorithm on the TCP socket helps improve the touch
screen input responsiveness on cellular links. The buffering could get
excessive at times without this causing significant lags and skips in
input that degraded the user experience.

Change-Id: I894859a3f0e9d5319cd90dba5598d051ed19835f
Reformatted AppRTC code

Reformatted AppRTC client and activity classes.
Removed commented code blocks.
Optimized imports.
Cleaned up AppRTC activity

Separated AppRTC observers into different classes.
Removed unneeded functions and variables.
Fixed bug where receiving an AUTH_FAIL would cause a resource leak.
Move socket handling into the service

Converted the AppRTC client into a Binder object that is shared
between the SessionService and the AppRTC activity.
The service is created before the activity starts, and it is
stopped when the activity finishes.
Fix audio volume issues and remove dead code

There was some extraneous code left over from the AppRTCDemo that was
causing some problems.

1) There was a block setting a wakelock for no good reason

2) A second block changed some settings in the audio manager. These had
the side effect of messing up the client phone's volume settings semi-
permanently (at least until reboot or the app was uninstalled).

Both sections are removed.

Change-Id: I60ce9c099a333d5d67f971336bf58d0cd0f5254b
Abstracted state machine

Created an actual state machine for establishing the SVMP
connection, uses the observer design pattern to update AppRTC
activity and session service.
Tweaked some of the toast messages.
Updated so failing to receive video parameters will trigger an
error message and return to the connection list activity.
Fixed issue disconnecting sockets

Fixed issue where, if the socket input stream or output stream
encountered an error, the AppRTC client wouldn't properly close
the socket upon exiting.
Updated client awareness of session expiration

Changed client code to read new Protobuf fields for session max
length and grace period. Changed database handler to store extra
session information and check for session expiration.
If a session is expired - either because it has exceeded its max
lifespan, or because it has exceeded its grace period for renewal
- the client will discard the session information.
Co-commits:
svmp-protocol-def
svmp-server
Cleaned up DatabaseHandler

Fixed typo in addTableColumn that would cause it not to work
correctly if it was used on a table other than 'CONNECTIONS'.
Deleted unused code.
Refactored AppRTC code

Added helper class with interfaces and functions that are used
throughout AppRTC code.
Replaced throwing runtime exceptions with error logging.
Cleaned up code in other classes.
Major class reorganization

Reorganized classes into names and packages that make sense.
Cleaned up AppRTC client

Moved state-changing Async tasks into sequential order.
Added comments.
Removed unnecessary/ambiguous methods.
Refactored performance measurement code

Changed code to use a Context and an AppRTCClient instead of an
AppRTCActivity, will be needed when this is moved to the service.
Changed handlers to use an adapter object to record data, instead
of directly accessing the span and point performance data objects.
Moved sensor handling

Moved sensor handling into AppRTC client (background service).
Removed unnecessary use of performance adapter.
Moved message and location handling

Moved message and location handling into the background service.
Re-organized AppRTC helper and client classes.
Made major changes to AppRTC activity.
Changed Message Handler to allow both service and activity to
listen for messages - the service receives all messages; if it
doesn't consume a message, it is passed on to the activity.