Add an abstraction around the implementation of sending HTTP requests, and an Apache HttpClient implementation

Same as PR #484, but with an optional implementation via Apache HttpClient