(TK-108) Add support for persistent Java clients

This PR adds support for both synchronous and asynchronous persistent Java clients.
I agree that the user shouldn't be able to set this, especially now that we've made the `request` method private.

I think the problem with only allowing it to be set on the `RequestOptions` class is that `RequestOptions` is only an internal class when you use the Simple APIs. When using a persistent client, `RequestOptions` is public-facing, so we run into the same issue. 

I could make this setter `protected` in the `SimpleRequestOptions` class, which would restrict its usage to our classes, but we can't do that for `RequestOptions`, because the persistent client classes live in a separate package from the `RequestOptions` class since they're internal classes.