Centralize some shared logic bewteen HTTPClient implementations.
Add a test for simple_httpclient's hostname_mapping.
Make simple_httpclient's hostname_mapping a Resolver wrapper.
simple_httpclient._HTTPConnection now takes a resolver directly.

This makes the "client" parameter optional for websocket connections.
Add a future-based interface to AsyncHTTPClient.fetch.