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.
Are you sure about this? The additional struct doesn't add any data to the type, just a scope.