flush all removed config files (only required in optimize mode).
Detailed Description
The config manager is used to make a number of config file objects look like a single object.
To do this, every config file object (also called 'domain') is assigned a priority value. Options from config files with higher priority override options from config files with lower priority. These 'lower' options are not really deleted, so if you access the 'lower' config file directly you will still find their real value. If two config objects use the same priority value, it is not defined which of them takes precedence.
One config object is the so-called 'dynamic' object. When you change something in the global configuration, these changes are applied to the dynamic config object. The changed key is removed from all objects with higher priority. The dynamic object is given to the config manager at construction and cannot be changed later. It has always priority 0 (medium).
Differences in behaviour compared to a normal confguration object are:
Deleting a key will not always remove the key from the configuration completely. It will only remove the key from the dyamic config object and all higher-priority objects and thus reveal the lower-priority value. This also applies to the Clear() method.
The Load() and Save() methods will load or save the configuration of the dynamic domain. The other domains are not affected by Load(), and Save() won't write any keys from other domains.
Iterators: If you change an option after an iterator has passed this option, it may appear again, this time with the new value. If you change the option while the iterator looks at it, you may even read it twice after this change, once with the old and once with the new value. In general it's a bad idea to change something while an iterator exists.