Add dependency sinon

It has spies, stubs and sandboxes which are useful in tests.
Fix bug in Queue.prototype.close

It returns a promise which should be resolved when
both the client and the blocking client's stream had triggered the
'end' event.
It was incorrectly setting two listeners on the non-blocking client's
stream, instead of one on each. Interestingly this would still work
as this would mean that the listener would be executed twice.
This commit fixes this subtle bug and adds tests for the fix.
Re-run queue if the blocking client triggers an 'end' event

If redis sends a FIN packet to the socket open by the blocking client,
the socket triggers an 'end' event.
Although node-redis will try to reconnect automatically, any blocking
commands (including BRPOPLPUSH) in node_redis's queue will be flushed
and their callback will receive an Error message.
This commit adds a listener to the 'end' event which will restart
the queue.