Variable with timeout

Wanted to add optional timeout that can be applied on a per request basis for 'with' or 'checkout' methods. I used an options hash with default value to not break any current clients who are currently using it. Also used as hash as I think it could be extended with other optional params. One option might be :suppress_error if somebody wanted to return nil instead of raise timeout error when a checkout fails.

Feel free to merge in if you find value in this.