This should complete what was started in the HiFi days but didn't quite succeed.
Setting::Manager is now thread safe, and delegates all settings writes to a thread
that nothing waits on, which should ensure that settings don't degrade performance
even on slow storage devices.
Functions that weren't thread safe were removed from Setting::Manager, and it was
reduced to a key/value store.
Functions that modify state like beginGroup were implemented in the Settings class
instead, which should be created only in the context where it's needed. It will
forward all changes to the manager.
A few QSettings functions were left unimplemented because they're not used in
the code. They may be implemented later if there's a need.
That flag caused a DLL to be loaded before Application was
instanced.
This triggers a Qt bug inside Q_COREAPP_STARTUP_FUNC that causes
the previous registration pointing the startup function in
the main executable to be overridden with the address of the
function in the DLL (Since they both link the same static
library)
This leads to the correct function running in the wrong address
space (the DLLs), hence not initializing some global variables
correctly.