Second implementation of Redis backend to strore NS descriptors.

There are actually two implementations here:

 1) Creates a RedisClient for each transaction. This is logistically and
     conceptually simpler.

 2) Creates a single RedisClient, then creates a DeferredList which
     essentially pipelines transactions over a single database connection to
     feed descriptors into the database as fast as the database can handle it.

It turns out the #1 usually results in OS errors due to ulimit, resultant from
opening too many file descriptors simultaneously. Particularly, it becomes
reproduceable once there are at least 1000 descriptors.

Implementation #2 works much better in practice, and so it is worth the extra
complexity. Plus, it averages roughly 5 times faster than #1 (with 250
descriptors: #1 takes an average of 62ms; #2 takes 12ms).