Support for strongly typed models

This is kinda a large modification to what you guys already have but I put together a new branch with several features that we needed. We switched the backend http library over to the google http client with jackson for json serialization. 

* **Support for exponential backoff**. 
Given there is an issue we would prefer to slow our queries down while you address the issues. 
* **Proxy support** 
We currently don't have the is a hard requirement but will in the future. The api client allows the transport to be pluggable, which allows us to support a proxy.
* **Strongly typed models**
We would prefer to work with object representations of the underlying data. 
* **Unit Test Capability**
We wanted to be able to test search queries without actually calling the service. Converting to the url system allows us to test our code that builds out search queries with actually calling your service
* **Metrics Support**
We need to be able to keep track of the number of calls and elapsed time going out to your service. This data will later be persisted by statsd. We added an interface for metrics collection that supports this.
* **Async Support**
We're still working on this feature but it will be ready soon.

The only thing we need to get working is the nested search query. That is the only feature that needs work.

Everything should be updated to include a MIT license for all the source. I'd love if you guys could take a look at let me know what you think.