The controller does multiple things in two phases:
When instantiated:
1) It creates a new commandContext.
(So the kickstarter can change or add parameters to the context.)
When processing:
2) It delegates the resolving of the action parameter to a real Command object,
to the commandFactory.
4) It passes the commandContext as a parameter value into the command.
5) It executes the command.
6) It returns the result to the kickstarter.
When in 'single command mode', the controller will also search for an optional config file in config dir.
This filename must be equal to the command-name, except for the extension. (myCmd.js --> myCmd.json)
Any subdirectories are ommitted.
For macro's the configuration is loaded by the build-in
Macro command.
The loading for single commands is synchronous and blocking, so it can be done here.
For macro's it happens to be async and therefore a different strategy is needed.