Add command queue for nodes

This implements a command queue for each node, allowing more than one command to be sent to it at the same time.  (This does not implement any sort of "acknowledge this was done" operation or anything like that -- send a reboot ahead of another command and it will likely be lost in the shuffle.)

It also implements some backward compatibility features -- the commits walk through an evolution of the code, while the final product shows only the explicitly versioned client/server protocol.