Introduce sharded Redis engine

Our Redis backend is becoming CPU bound so we need to shard the keys
Faye uses over multiple Redis systems to reduce the amount of work
each system needs to do.

I've added a lightweight wrapper to abstract accessing a distributed
set of redis servers. The Engine now accepts an array of Redis URL
strings in the servers option key. Note that since pub/sub isn't
shardable we just use the first server provided as the pub/sub bus.

The only significant change made to the existing engine is the call
to multi. The signature for multi has been changed to accept a key
so that it can return a specific connection. This implies that multi
can only operate on one key only per call and leveraged for atomicity.
That said nothing enforces this: multi returns a connection on which
anything can be called. Utilitor emptor.