> Remove double newlines after some init errors
>
> Some InitError calls had trailing \n characters, causing double newlines in
> error output. After this change InitError calls consistently output one newline
> instead of two. Appearance of messages in the GUI does not seem to be affected.
> Can be tested with:
>
> src/bitcoind -regtest -datadir=noexist
> src/qt/bitcoin-qt -regtest -datadir=noexist
> Add InitError(error, details) overload
>
> This is only used in the current PR to avoid ugly
> `strprintf(Untranslated("%s:\n%s"), str, MakeUnorderedList(details)`
> boilerplate in init code. But in the future the function could be extended and
> more widely used to include more details in GUI error messages or display them
> in a more readable way, see code comment.
> Deduplicate bitcoind and bitcoin-qt init code
>
> Add common InitConfig function to deduplicate bitcoind and bitcoin-qt code
> reading config files and creating the datadir.
>
> There are a few minor changes in behavior:
>
> - In bitcoin-qt, when there is a problem reading the configuration file, the
> GUI error text has changed from "Error: Cannot parse configuration file:" to
> "Error reading configuration file:" to be consistent with bitcoind.
> - In bitcoind, when there is a problem reading the settings.json file, the
> error text has changed from "Failed loading settings file" to "Settings
> file could not be read" to be consistent with bitcoin-qt.
> - In bitcoind, when there is a problem writing the settings.json file, the
> error text has changed from "Failed saving settings file" to "Settings file
> could not be written" to be consistent with bitcoin-qt.
> - In bitcoin-qt, if there datadir is not accessible (e.g. no permission to read),
> there is an normal error dialog showing "Error: filesystem error: status:
> Permission denied [.../settings.json]", instead of an uncaught exception
This is a backport of core#27150 and core-gui#690 (dependency and bugfix)
Depends on D18215