(#23373) Only parse section lines once

The previous code would parse all of the settings of a section for each
section header. This meant that if a section showed up in the
puppet.conf twice the settings in that section would be parsed twice.
This didn't cause any behavioral problems, but is inefficient. This
makes sure that we only look at unique sections names. Instead of
putting this logic in IniFile it is in ConfigFile in order to preserve
IniFile's somewhat naive view of the world.