Manages the different components. Typically, instances of the different components are stored, as opposed to classes. In such a way, the component manager stores all the state of the user. Exceptions are widgets other than the main widget, which are lazily created for efficiency reasons.
For certain components, many can be active at the same time (card types, filters, function hooks, ...). For others, there can be only on active at the same time, like schedule, database ... The idea is that the last one registered takes preference. This means that e.g. the default scheduler needs to be registered first.
Typical use case for this is when a plugin has a GUI component which obviously does not live inside libmnemosyne, and which needs to be added at a later stage.
For components for which there can be many active at once.
For components for which there can be only one active at any time.
Log a debugging message if debugging is enabled.