Allow overriding just the timeout method

This separates out the building up of the http request from the code that
actually runs it with timeout protection, so that just the timeout protection
portion of the transmission can be overridden.
Override timeout_protection with configuration

Instead of overriding by just monkey patching the module, this allows passing
in a proc with the configuration.
Merge pull request #9 from simonista/timeout_protection

Timeout protection