Don't retry commands that fail due to a socket.timeout by default.

Users now have the ability about how socket.timeout errors are handled.
Previously socket.timeout errors were handled just like any other socket error
in that the command would be retried once. This createed a potential race
condition when the client sends a command to a busy Redis server that can't
reply faster than the client's `socket_timeout` option. In this case, the server
will still eventually process the command.

There's now a `retry_on_timeout` option that's set to False by default.
If `retry_on_timeout` is False, any socket.timeout error will raise a
TimeoutError exception. If `retry_on_timeout` is set to True, the client
will retry executing the command once just like other socket.error exceptions.

TODO: Write better tests for this code.
TODO: Much of this logic could/should be moved to the ConnectionPool or
      Connection objects.

Fixes #261