Feature work for 0.2.0

This PR fixes #6 , #7 , #8 , #9 and #10 .

With this work the Java client is now fully up to date with the Orchestrate API. I've had to make a few breaking changes to the API with this work:
* `Client.builder(...)` has now become `new ClientBuilder(...)` to allow me to turn `Client` into an interface.
* `Client` is now an interface which will make `mock`ing the client for unit testing much easier in user code.
* `DeleteOperation` is now only used for Collection deletes, to delete a KV object in a collection use `KvDeleteOperation`.

I've not updated the user guide for the release yet. I'll do it in a separate PR because this code review is already a lot larger than I'd have liked...