Split Uploader into multiple files. Move non-android code into a
separate module.

Tested:
  (with device or emulator connected)
  ./gradlew clean test connectedAndroidTest
Update wait_for_emulator script.
Fix some hamcrest imports.
Report failures when uploading, so that they bubble up to the UI.
Make the restuploaders successful on 2XX status codes.
Merge pull request #70 from trhodeos/dev2

Split Uploader into multiple files. Move non-android code into a
Return false if configured uploaders are not represented in uploader collection. Updated unit test to capture invalid protocols for mongo
Changed CRCFailRuntimeException to an unchecked error rather than a runtime exception
Status bar icons will all reset to red if the device is unplugged
Moved REST API above Mongo since we are deprecating mongo uploads
Cleaned up some method names to match coding style
WIP - Download object that represents a single download from a receiver.
Protobuf updates:
-download_timestamp is now ISO8601.
-receiver_system_time is the raw timestamp as reported by the receiver.
-Added patient name.
-All record times should be the raw system time as reported in the record.
-Re-ordered some of the record tags - protobuf is not currently in use
Unit tests caught an error in the AbstractRestUploader. Code was added in an attempt to squelch the log complaints about a connection still being allocated.  Removed line for now.