(#17371) Re-initialize settings metadata after run_mode determined

Currently metadata for settings (e.g. mode, owner) is initialized during
parsing of the config file, at which point the run_mode isn't known.  The
initialization loops over each section of the config and since one of the
sections is determined by the run_mode, this means it doesn't get searched.
Setting file metadata inside a section such as [master] has no effect.

This patch causes the setting metadata to be set twice - once during early
startup before the run_mode is known (for settings used globally) and again
once the run_mode is known so that configuration in specialised sections take
effect.

Supersedes GH-1278, rebased onto master as it missed 3.0.x.