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.
Nope, they use the Command interface and helper functions exclusively. Only the coordinator needs to do string comparisons on the command name ... so far.

If that changes we'll export these.