Add HTTP Proxy support.

Lots of ideas and code from #13, thanks to @ryber for the starting point!

Still needs a solid test for the changes to `UrlConnectionHttpHandler`, but I figured I'd get this PR going so we can discuss the overall strategy in parallel. The basic idea is that each `KeenClient` instance has a private `proxy` variable and that is passed every time a `Request` object is created. If a `Request` has a proxy set, `UrlConnectionHttpHandler.openConnection` uses it.
Yeah, I'll add a direct `setProxy(Proxy proxy)` method, if only for testing (the String + int version seems more developer friendly). With that, I'll remove `clearProxy` as that will be redundant for `setProxy(null)`.

I did consider synchronization and I'm pretty sure it doesn't need to be. Clearly, if proxy is being mutated and used (by sending events) on multiple threads, there will be race conditions, but synchronized mutators don't solve that (blocks synchronized around the client in the app's code could). Since proxy is passed to the `Request` constructor and is then `final`, the only possible synchronization issue is avoided: [line 47 and 48 of UrlConnectionHttpHandler](https://github.com/keenlabs/KeenClient-Java/pull/25/files#diff-46a750253aadad8ebbaf5af8f84edba9R47).