Commands

Fixes #42 

I still need to add more Command+Consumer specific tests, but this has so many changes in it I'd prefer to merge this ASAP.
Go nuts overwriting any of the changes I made to watch.