(TK-108) Add support for persistent Java clients

This PR adds support for both synchronous and asynchronous persistent Java clients.
I also don't have a strong opinion on this, so I'm willing to change the `request` methods to be private if that's what you'd prefer @camlow325.