Add command infrastructure

This PR introduces an initial version of the command infrasructure.
Targets #188.

Please let me know if and how the documentation is not sufficient.
That's not what I wanted to explain:

You actually can put the union and the enum above into an own scope, as they belong to eachother very closely.