(TK-108) Add support for persistent Java clients

This PR adds support for both synchronous and asynchronous persistent Java clients.
It feels a little strange to have an `HttpMethod` setter on `SimpleRequestOptions` given that the caller would later on be invoking a method on the `Sync` or `Async` class which should dictate what the `HttpMethod` is.  For example, a `Sync.get()` call should use a `HttpMethod` of `get` regardless of whatever the internal `method` variable had been set to on the `SimpleRequestOptions` parameter.  Maybe this would be clearer if `getMethod` and `setMethod` were eliminated from the `SimpleRequestOptions` and only set onto the "internal" `RequestOptions` instance created later on?