Set the DefaultTimeout with the Connection

So #554 is one option for addressing the timeout issues in #567, but as @Haacked and I discussed it'd be nicer to avoid the static property. So this is my proposal to satisfy that in the simplest possible way.

`Connection` is where we create the `Request` objects, before passing them to the `HttpClientAdapter` - so why not configure it there?

This adds a new `ctor` to `GitHubClient` where you can set this:

```
var client = new GitHubClient(new ProductHeaderValue("OctokitTests"), TimeSpan.FromMinutes(30));
```

I don't believe anyone else is using more than the default one, but I'm sure I'll hear about them sooner rather than later if they also want this...

 - [ ] confirm via feedback that this approach suits the known issues/limitations

cc @distantcam @Arakis for feedback

We should ensure the `TimeSpan` is not negative.

Also, today I learned that `TimeSpan.Duration` gives you the absolute value of the `TimeSpan`. I don't think we should use that here because I feel if someone passes us a negative `TimeSpan` they probably fucked up and should know about it.