Uncrappify the UI

Great approach to get the Heaven __CentralUi__ classes in a usable shape. _Usable shape_ refers to the code base here. There will be follow ups that deal with the visual appearance.

Tasks:
- [x] Actually use the concept of 'Modes' to switch between _Welcome_ and what we still call _Novice_.
- [x] Read layout definitions into the `WindowStateBase` class and its derivats - instead of UserLevel-Configuration that used to dwell in libMacGitverCore.
- [x] Remove all view creation from libMacGitverCore and teaches libHeaven to synchronize a WindowStateBase hierarchy with the current layout.
- [x] Don't regenerate the user interface when switching the active repository.
- [x] Get rid of the multiple inheritance used in View/Container classes.
- [x] Fix layouting Widgets / Toolbars inside of Views.
- [x] WindowStates: Provide a Key/Value container that can persist individual views' settings. (Based on a `QSharedDataPointer`, so that is versatile usable, which is the main drawback of the current (unfinished for that reason) implementation on `QDomElement`.
- [ ] WindowStates: Get rid of `QDomDocument`s as settings containers.
- [ ] WindowStates: Synchronize closing of view with window state
- [ ] WindowStates: Persist and restore view-local state information.
- [ ] Provide a TreeView that will put it's visual state into a model (A state model, not an Item Model). It's weird that a tree looses the item-is-expanded state when we switch between repositories.
- [x] Implement Contexts
- [x] __MacGitverModules__: port RepoTreeView to ViewContexts
- [ ] __MacGitverModules__: port Branches to ViewContexts
- [ ] __MacGitverModules__: port HistoryView to ViewContexts
- [ ] __MacGitverModules__: port WorkTree to ViewContexts
- [ ] __MacGitverModules__: port Refs to ViewContexts
- [ ] __MacGitverModules__: port Tags to ViewContexts
- [x] make libHeaven's ContextManager a cache for such contexts.
- [x] correct destruction of `ViewContextData` and co
- [x] on switching active repository, detach all contextual views from their contexts, switch and reattach to new or cached contexts.
- [x] make `ViewFactory` internal and manage all the data (that MGV-Main/Core have locally) directly inside libHeaven, so we can implement features like "Add View" (We're missing a title for the view currently, as we only got the identifier down in libHeaven).
- [x] Lots more of documentation
- [ ] Update remaining copyrights to assign primary copyright to the devs-group, but include individual copyrights.
- [x] Final code style update: Move all remaining .h files to .hpp
- [ ] Fix crashes on ending the application build with Qt5.