(TK-23) Port to apache HttpAsyncClient

* 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.
I'm not sure I see the advantage to pulling the `maybe` out of the schema and repeating it in several other places in the code instead.  Anyone who needs to know what the schema for `ResponseCallbackFn` is is going to go look at the schema, and they'll see the `maybe` there, right?

As to using a default callback function rather than allowing `nil`, I don't think that's a bad idea or anything; I don't think that would be any *worse* than the current implementation, but I'm not really sure that it'd be enough of an improvement to warrant spending the time to refactor it right now... it seems like a pretty minor detail to me and we have plenty of other things to spend our time on :)  However, if there is strong disagreement with my take on this then I will refactor it.