Allow use of alternative HTTP client implementations

In particular this means we can use OkHttp, so we can make use of it's
HttpResponseCache/DiskLruCache. Making a conditional request against the
GitHub API and receiving a 304 response does not count against the Rate
Limit - very beneficial.

http://developer.github.com/v3/#conditional-requests

The constructors of `GitHub` go from being private to protected, to ensure
we can instantiate a subclass. For instance:

OkGitHub okGitHub = new OkGitHub(null, "githubapikey", null) {
    @Override
    protected URLConnection open(URL url) throws IOException {
        return okHttpClient.open(url);
    }
};