Use OkHttp for HTTP transport

Use OkHttp for HTTP transport, and provide a clean way to customize the JSON library to be used.
Also provide a more convenient way of creating the ApiClient