Rewrite of LRS interface and RemoteLRS

This is an extension of what was originally PR #23. Original description:

"-LRS, RemoteLRS, About, LRSResponses, and Documents brought updated to new architecture.
-ContextActivities and TCAPIVersion modified to handle receiving V101 responses
-HTTPRequest and HTTPResponse modified. HTTPRequest no longer extends ContentExchange. It instead stores the relevant
data for a request, and the ContentExchange is constructed in a private function in RemoteLRS."

This adds a few commits that primarily fixes a precision issue with result.duration.
I see we were doing this already, but note that by declaring throws Exception here we force consumers to either catch "Exception" or to throw Exception themselves. On the other hand, our "throws" statement is part of our contract, so we can't add to it (we can only ever make it more specific) without breaking consumers.

http://tutorials.jenkov.com/java-exception-handling/checked-or-unchecked-exceptions.html

We don't have to do anything about this right now, but I wanted to make sure you were thinking about it.