(TK-108) Add support for persistent Java clients

This PR adds support for both synchronous and asynchronous persistent Java clients.
Yeah, unless we definitely want them to be public, I'd make them private.