(TK-108) Add support for persistent Java clients

This PR adds support for both synchronous and asynchronous persistent Java clients.
Same question here as on the `RequestOptions` around the reason that this needs to hold a client.