Transfer & connect timeouts, in seconds & milliseconds

This PR supersedes #58 & #83

- You can now specify `timeout` and `connect_timeout`
- milliseconds are supported, in a backward compatible way (eg `'timeout' => 3` or `'timeout' => 3.55`)

I've added a cool example also.

I didn't add tests, as that would just slow down things, but it's possible with the same URL used in the example