Forward CancelRequest to underlying Transport

`http.Client.doFollowingRedirects` only support timeouts if the `http.Transport` is a `canceler`. Even though the underlying `http.DefaultTransport` is a `canceler`, `heroku.Transport` is not, so requests never get cancelled when a timeout is set on `http.Clint`. This change forwards the `CancelRequest` to underlying transport if it is a `canceler`.