Centralizing URI encoding and Json

This is just a few of the refactorings we'd talked about that didn't land in 0.3.0.  

- Pull the uri encoding up into a shared spot. It is now in the OrchestrateClient as a package-private ONLY because the ping() call doesn't have a Resource. If it had a PingResource, it might fit better in the BaseResource instead.
- Pull the json/jackson stuff into a shared spot. This has moved up to BaseResource and it helps to reduce the liklihood of parsing the json incorrectly (like non-utf8 for example) as well as starting to separate the json handling out a bit more so that it can be completely pluggable (so folks could use gson for example).