Fixes: #9156
Names: contain only A-Z a-z 0-9 or - or . or _
replace any spaces with _
are < 256 characters in length
can not start or end with - _ or .
Set a screen name if the settings does not have one do this instead of returning a default value
Windows registry is horrible to deal with and makes it impractical to pass settings to the Core when run via daemon on Windows.
- Pass settings path to Core when launched via daemon
- Introduce portable mode detection logic on Windows
- Generalize `m_settingsFile` use
- Reduce #ifdef size for Settings ctor path logic