Retry a request upon a ETIMEDOUT error

Added Errno::ETIMEDOUT as an exception which will trigger a retry of the
request.

SystemCallError is not rescued as exceptions in the block execution may
raise non-socket system call errors which could erroneously trigger a
retry or incorrect exception.

Fixes #36