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.