Make .free() on commands send a message over an async watcher to the
event loop, just like adding commands. This gets rid of some very tough
to find memory bugs. Combined .cancel() with .free(), so there is only
one method to call, whether for synchronous commands or for looped
commands.
Also debug some horrible segfaults related to Subscriber. Something is
odd with hiredis and subscriptions, need to ask them. It seems when we
flood with commands it doesn't disconnect cleanly. Look for a way to
wait until all commands are processed.