Refactor http layer

This PR decouples the HttpRequests and CouchClient objects. This enables the HttpRequests object to be reused in other areas of the library