(TK-108) Add support for persistent Java clients

This PR adds support for both synchronous and asynchronous persistent Java clients.
So, in the clojure API, when users call these 'simple' versions of the request methods, they aren't forced to distinguish between which options are for the request vs. which are for the client.  We do that for them.

Is there a way we can do that here too?  e.g. create some kind of roll-up class that encapsulates both the request options and the client options, and then we break it up into RequestOptions and ClientOptions for them?  That way, when using the simple API, the caller only has to pass the one object type?