HTTP client handler implementation that allocates content buffers of limited
size upon initialization and is capable of controlling the frequency of I/O
events in order to guarantee those content buffers do not ever get overflown.
This helps ensure near constant memory footprint of HTTP connections and to
avoid the 'out of memory' condition while streaming out response content.
The client handler will delegate the tasks of sending entity enclosing
HTTP requests and processing of HTTP responses to an
Executor ,
which is expected to perform those tasks using dedicated worker threads in
order to avoid blocking the I/O thread.