add timeout using IO::Socket::Timeout

This is a respawn of PR #33. I'm the one that originally asked Curtis to add read / write timeout to Redis, it was neede for $work. Here is a better implementation, using IO::Socket::Timeout. This module on CPAN. It provides timeout strategies safe on any platform, and with different performance and features. It's still new, so some ironing may be needed, but so far it works well.

So, what I do here is use IO::Socket::Timeout to build a genuine IO::Socket::INET instance, but the socket gets an additional perlio layer applied, using PerlIO::via::Timeout. So it doesn't rely on specific code in Redis, nor does it use overloading or method wrappers. It's all at the perlio stage.


Feedback very welcome.