Add an IdleTimeout to the Transport

Proposal for an IdleTimeout option on the httpclient.Transport.

- This allows finer control of the timeouts on the client, and gives the caller an actual timeout error when hit, vs the closed connection error returned after canceling the request.
- This obviously interferes with Keepalive connections. Not sure if it should disable them by default, or just note it in the documentation.
- I punted a bit on the tests -- really need to put in a slow-writer endpoint to test for the IdleTimeout specifically.