(TK-108) Add support for persistent Java clients

This PR adds support for both synchronous and asynchronous persistent Java clients.
Yeah, good point.

I think I'm okay just leaving it how you have it for now.  We waffled a bit on whether or not to make the `request` method public.  If we did do that, the `method` setter and getter would become valuable again.

It's a little weird that we effectively stomp whatever value a client may have established with a `set` call.  I suppose we could get around the ambiguity by having `method` be a separate parameter which is passed around along with `RequestOptions`.  May not be worth it, though, given that we have the same issue at the Clojure client level already as well.

@cprice404 - you also okay with leaving this part alone?