Refactor

This PR refactors the complete setup into several files, including some namespace renamings and polishing of the overall architecture.

@theneikos: Please review. I used your commits.

Note that the software does not run yet. My fix-branches will be rebased onto this and after that the software should be runable, at least.
Yeah, this is kind of a "in-development-fix", as the requires must be re-sorted. The architecture is still ugly here, as we need to include a command "A" before we can include an command "B" as the command "B" requires the class definition of "A".

I don't know how to fix this properly and it requires further refactoring.