Implement Request Timeouts

This implements the missing request timeout functionality, by reusing the request cancellation code.

Unfortunately, this code comes without tests, because writing tests using nodeunit is a real pain in the butt and I was not yet able to allocate any time to move the test suite to mocha.

The functionality itself should work fine, as we've been running it for quite a while on our production systems.

The implementation was kindly provided by Jeevan Kumar Jagadesh.