(Maint) Move initialize near top

The initialize method was hard to find buried down after line 300. This
moves it closer to the top so that a reader of the code and more quickly
see how things are setup.
(Maint) Extract class to encapsulate value translation

The value translation code has been buried deep inside the general
settings handling, which has made it hard to find, reuse, and test. This
pulls out a class that can be used for setting value translation.
(Maint) Extract value translator for settings

Pulled out a class for the translating of values that are going to be
used as settings and added tests around that code.
(Maint) Use value translator directly

This removes an unneeded method that simply called through to the value
translator. There don't seem to be any users outside of the settings.rb
file that were actually using this method.
(Maint) Remove unneeded parse_file method

This method simply delegated to another class. There were no users
outside of the settings.rb file, and so it is just inlined.
(Maint) Remove unused method sectionlist

This method isn't being used anywhere, even in other projects that I
checked.
(Maint) Remove code to support multiple config files

Support for merging config files had been removed, but some of the
supporting code was missed during the removal. This removes the rest of
the support in settings.rb to handle merging multiple config files.
(#15989) Allow setting arity on functions

The arity value works the same way as for blocks in Ruby.
(#15989) Set arity on functions

Set the arity on builtin functions.
(#15989) Tests for function arity

Test that setting arity on functions work as it should.
(#4695) Puppet should not reset locale for services

Don't reset locale when starting services, we don't parse their output
so there is no need.

This avoids having different locales for services depending on if they
are started on boot or started by puppet.
(#7622) Deprecate and remove features.pson?

PSON is always available and so the pson feature was only used for the
side-effect of requiring the pson files. This commit deprecates the pson
feature and moves the requires to the puppet.rb file so that PSON is
available early on.
Replace dashes with dots for gem version

When switching out to using git-describe for versioning from
source, gem versioning breaks because dashes are not allowed.
This simple fix replaces the dashes with dots, which are.
Note that in a merge-up to 3.0.x, this commit will conflict.
Default to 'ours' in a merge-up, this file does not even exist
in 3.0.x and shouldn't.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Preserve timestamps when installing files

Without the preserve option, ruby's FileUtils.install method uses the
current time for all installed files.  For backup systems, package
installs, and general pedantic sysadmins, preserving timestamps makes a
small improvement in the world.
(#15513) Clarify target attribute for cron

Without this patch applied the behavior of `target` in the cron type isn't made clear.
This is a problem because users report trying to use a file as the target instead of
the intended username, producing unexpected results.

This patch clarifies the behavior of `target` by improving the description docstring.
Merge branch 'pdxmph-cron_type' into 3.0.x

* pdxmph-cron_type:
  (#15513) Clarify target attribute for cron
Merge pull request #1247 from MosesMendoza/maint/2.7.x/preserve_timestamps_install.rb

Preserve timestamps when installing files
Merge branch 'ticket/master/7622-remove-confine-true-with-feature'

* ticket/master/7622-remove-confine-true-with-feature:
  (#7622) Deprecate and remove features.pson?
Merge pull request #1254 from MosesMendoza/maint/2.7.x/fixup_gem_task

Replace dashes with dots for gem version
Fix build targets for 2.7.x

This commit revises the lists of cows and mocks to build against to remove
redundant and unnecessary targets given Puppet is noarch.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>