Add request-with-client functions to the async and sync
namespaces. These now do all the work of the request functions,
so that the request functions cannot directly be passed a client
by the user.
* Ports the code over to use the Apache HttpAsyncClient library
instead of http-kit, as we were getting some weird and inconsistent
SSL errors from http-kit, and
* Simplify the API (by eliminating a lot of the supported configuration
options). Some of these options we'll eventually want to add back in,
but for now, getting rid of them makes the API less cluttered and
also gives us the opportunity to do a better job writing tests
for new options when we do add support for them.
For now it only supports constructing a new client on every request.
I intend to add API for creating a client explicitly, and a protocol
for how to interact with the client. This will allow users to
re-use an existing client as they see fit... but this hasn't been
implemented yet.