(PUP-1932) Restrict systemd provider to manage file-based services

Prior to this commit, the systemd provider returned in-memory services.
This had a couple odd consequences, e.g. with 'puppet resource service':
1) short-lived services would come and go, though they are not actually
   managed directly
2) disabled and stopped services wouldn't be reported at all

This commit changes the systemd provider to return file-backed
services.
Use no-daemonize and not forking service

Making puppet fork and systemd to read PID file seems unnecessary complicated.
Adding dependency on puppetmaster to puppet

Sounds like a good idea to wait with start of puppet agent to finish starting
of puppet mater first.
Make relation between service and sysconfig file obvious

There is puppet service but it's environment file is called puppetagent
(probably due to historical reasons). Making the naming more consistent and
obvious.
(PUP-2613) Comprehensively test all yumrepo params
(PUP-2150) allow yumrepo params to be set absent

Commit 7b8650e introduced proper validation for yumrepo properties that
should be URLs, but didn't allow those properties to be set absent. This
commit remedies that limitation.
(PUP-2162) support yumrepo baseurl/gpgkey multiple values

The yumrepo gpgkey and baseurl parameters can accept a list of URLs, so
to validate them we need to split the field on whitespace and validate
each value in that list.
(maint) Don't strip whitespace from yumrepo keys

Yumrepo values may have leading or trailing whitespace, and stripping
this can cause resources to flap. Since it's not strictly necessary and
the yumrepo code in 3.4.3 didn't handle this, we can omit this for now.
(PUP-2179) Add test coverage for IniConfig::Section
(PUP-2179) Extract standalone INI file class

The existing Puppet::util::IniConfig::File class is responsible for both
managing a collection of files as well as parsing, formatting, and
storing those files. This overloads the responsibility of this class and
makes it hard to make behavior changes.

This commit extracts a class that represents a single file. Since the
'File' constant is already used this is named 'PhysicalFile' in contrast
to the logical nature of the existing File class. This commit only
extracts the parsing and later commits will add more behavior.
(PUP-2179) Implement INI single file formatting
(PUP-2179) implement storing for single INI files
(PUP-2179) Implement simple INI file collection

This commit reimplements the Puppet::Util::IniConfig::File interface on
top of PhysicalFile objects. This makes for a much simpler and cleaner
implemenatation that we can swap out the implementation of the File
class.
(PUP-2179) Replace Puppet::Util::IniConfig::File

The old Puppet::Util::IniConfig::File class was messy, complex, and had
no test coverage; this commit removes that class and aliases the
FileCollection class to the File constant.
(PUP-2181) Delete ini file entries on absent property
(PUP-2178) Map INI name to yumrepo descr

The yumrepo type uses 'name' as the namevar, while yum configuration
uses 'name' as the repository description. Because of this mismatch the
yumrepo type has a descr field that we need to explicitly map to the
'name' INI property. This commit adds the necessary mapping of that
field.
(maint) Yumrepo boolean values are case insensitive.

When handling boolean values for yum repos, a given value is downcased
before it is checked:

    # yum/config.py
    def parse(self, s):
        """Parse a string containing a boolean value.  1, yes, and
        true will evaluate to True; and 0, no, and false will evaluate
        to False.  Case is ignored.

        :param s: the string containing the boolean value
        :return: the boolean value contained in *s*
        :raises: :class:`ValueError` if there is an error in parsing
           the boolean value
        """
        s = s.lower()
        if s in ('0', 'no', 'false'):
            return False
        elif s in ('1', 'yes', 'true'):
            return True
        else:
            raise ValueError('invalid boolean value')

When validating these parameters we should perform a case insensitive
match to match the yum behavior.
(maint) Raise error when parsing duplicate INI section
Merge pull request #2520 from adrienthebo/bugfix/stable/pup-2163-yumrepo-fixes

PUP-2163 Smite yumrepo and inifile with the mighty sword of refactoring
(packaging) Update PUPPETVERSION to 3.5.1-rc1