Add cancel request to retry transport

@streadway Otherwise the wrapping http.Client can't make use of its timeout feature

see http://golang.org/src/pkg/net/http/client.go line 300
A nit - is that 'fib' now becomes a bound variable, so I'm pretty sure a unique 'fib' func will get compiled for every call of `Fibonacci` the compiler should discover that `fib` contains no free variables and reuse an implementation, but I'd err on the side of being nice to the compiler and leave `fib` a package function.