Feature/new architecture

Fixes #10.

The new command structure uses each class's name. For instance, the `SyncWorkspaceCommand` class answers to the `workspace sync` command. That is, to form the command's name the `Command` suffix is removed and, if there are two words, their order is reversed.

Each command class requires a `CommandHelp` attribute to describe it and, optionally, set an alias. Every command must implement the `Command` class and its `InnerExecute` method, while the options should be defined in the constructor.