(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