Redis: optional pipelining and better tested transactions

Adds optional pipelining (sending multiple commands at the same time) which can reduce network round-trips greatly.  Also this version of transactions is better tested than my previous version.