(TK-108) Separate Java RequestOptions class

Separate the Java RequestOptions class into two new classes:
RequestOptions, which contains options related to the request,
and ClientOptions, which contains options related to the client.
Both are now required when calling the request methods in
AsyncHttpClient and SyncHttpClient.
(TK-108) Add a persistent async Java client

Add a new class, PersistentAsyncHttpClient, that is a wrapped
CloseableHttpAsyncClient that is persistent.
(TK-108) Add a persistent sync Java client

Add a PersistentSyncHttpClient class, which is a wrapper around
CloseableHttpAsyncClient and allows multiple requests to be made
with a persistent synchronous client.
(TK-108) Add SimpleRequestOptions class

Add SimpleRequestOptions class, which unifies the Client and
Request options under a single class used for the simple API
calls.
(TK-108) Return interface in createClient methods

Return interfaces in the createClient methods rather than the
implementation classes themselves.
(TK-108) Remove failing close test

Remove the tests to ensure that the persistent async and sync
Java clients close correctly due to a race condition that
was present in the tests.
(TK-108) Separate SimpleRequestOptions in request

Separate SimpleRequestOptions in the JavaClient request() method,
rather than in every individual simple API function.
(TK-108) Address PR comments

Remove the client option from SimpleRequestOptions and
RequestOptions as it was not being used. Correct initialization
of the Logger in various classes to use the correct class.
(TK-108) Remove method option accessors

Remove the accessor for the method option in SimpleRequestOptions
and RequestOptions, as it would always be overridden by whichever
Java request method was called by the user.
Merge pull request #25 from fpringvaldsen/TK-108-java-persistent-client

(TK-108) Add support for persistent Java clients
(TK-103) Remove non-client based async APIs

This commit removes the non-client based APIs for doing async requests.
(TK-103) Remove AsyncClose class and references

This commit removes the `AsyncClose` class and references to it.  These
changes are in preparation for making the close call after the response
has been dereferenced - to be done in a later commit.  The `persistent`
flag/option was also removed from request handling as it will no longer
be used for determining whether or not the client should be closed
following a request.
(TK-103) Reworked sync single request APOIs to create and close client

For both the Clojure and Java single request APIs, the internal
implementation now creates an http client, makes a request on it, and
calls close on the client when done.  The close at the end avoids
resource leaks.

In support of this, the `JavaClient` class now requires the caller to
create an instance rather than just make a call to the static
`request` method on the `JavaClient` class.

The `coerceBodyType` method on the `JavaClient` class now closes the
body `InputStream` after coercing the stream content into a `String`.
This eliminates a possible resource leak and makes the Java-layer
coerce implementation consistent with the Clojure-layer coerce in
that the latter was already, via the use of the Clojure `slurp`
function, closing the stream content after coercing to `String`.
(TK-103) Restore client close tests

This commit restores some of the client close tests which had been
disabled temporarily per some of the refactoring for TK-108.