Added support for Apache HttpClient based connections

* Refactored the Request class to introduce a Strategy pattern.
* Moved the current URLConnection based logic into a class called URLConnectionStrategy
* Added a new HttpClientStrategy
* Also refactored the Response class a little to make it "extendable"
* Added a HttpClientResponse class that wraps the response from apache httpclient library