Observable command queue shared among clients

The tests don't pass yet so don't merge. (Though the failure looks a little bit not-my-fault, I'm sure fixing that would reveal a failure that was my fault.)

I'll update the tests if you like the patch or after we iterate the patch.

Hopefully the commit messages explain wtf.