Improve integration support for httpclient

The InstrumentedClientConnManager ctor param of InstrumentedHttpClient can make it difficult to integrate into existing system.

* Changes param to use ClientConnectionManager instead.
* Also makes InstrumentedRequestDirector public to help reduce code duplication in cases where integration needs to be more customized.