Add timeout feature on the async connection

The redisAsyncConnect function is missing a way to transfer a timevalstruct to the underlying connect function. If the target server drops silently every tcp packet, the call is blocked until something happens. But the underlying connection function can take timeval as an argument for a timeout, there is just no way to use it through redisAsyncConnect.