(#15264) Custom title patterns can fail cryptically.

If a type uses a composite namevar and none of the supplied title
patterns matched, #parse_title would return a nonsensical array value.
This would lead to unexpected behavior like output like:

    /usr/lib/ruby/1.8/puppet/puppet/resource.rb:235:in `to_hash': undefined method `merge' for #<Array:0x007ffba3d80d78> (NoMethodError)

If a type overrides the title_patterns method and nothing matched,
there's no possible way to recover from this. To prevent misleading
errors from being thrown, this patch raises an error if none of the
title patterns matched.
(#15668) Don't pluginsync for apply

After trying out having apply pluginsync there have been several
unwanted side effects. This commit removes the apply command from
pluginsyncing and so leaves only agent and device still performing
pluginsync.
(#15668) Use only one way of triggering pluginsync

Previously the Configurer took a parameter, :skip_plugin_download, which
whould cause it to not trigger a pluginsync. At the same time the
pluginsync code (Downloader) would look at Puppet[:pluginsync] to decide
whether it should actually pluginsync or not.

This changes it so that there is only Pupppet[:pluginsync] which is
passed through to the Configurer as a :pluginsync parameter when the
Configurer is called. Now all callers can be explicit about doing the
pluginsync and the Configurer is less dependent on Puppet settings.
(#15665) Fix issue with eix-update on newer eix (>=0.25.2).
Update CHANGELOG lib/puppet.rb conf/redhat/puppet.spec for 2.7.19rc1
(#15668) Replace test for order of files in pluginsync

The previous version of this test relied on using puppet apply to check
that the module path order was preserved in deciding the files to use
from a pluginsync. Without apply performaning a pluginsync that was not
possible anymore, but this test is still useful.

This replaces the previous test with a new one that uses the master and
the agent for performing a pluginsync and checking what files the agent
recieves.
(Maint) Simplify CONTRIBUTING.md

The previous CONTRIBUTING.md was verbose and prone to change as branches
changed. After discussion on puppet-dev I've cut it down a lot and changed the
policy for which branch to target to be a "prefer master" policy where it is up
to the merger to make sure it will go on the right branch.
(Maint) Whitespace cleanup of CONTRIBUTING.md

Just noticed some whitespace errors.  This is a whitespace only change
that removes trailing whitespace from CONTRIBUTING.md
Add HOWTO hint on topic branches in CONTRIBUTING

Without this patch it's not very clear how to create a topic branch.
This has been a problem in the past because we often get pull requests
from the master branch to the master branch which can be confusing when
working outside of the GitHub Web UI.

This patch addresses the problem by providing a concrete example of how
to create a reasonable topic branch and start using it with two
commands.
Make the example in CONTRIBUTING imperative and concrete

Without this patch applied the example commit message in the CONTRIBUTING
document is not a concrete example.  This is a problem because the
contributor is left to imagine what the commit message should look like
based on a description rather than an example.  This patch fixes the
problem by making the example concrete and imperative.

The first line is a real life imperative statement with a ticket number
from our issue tracker.  The body describes the behavior without the patch,
why this is a problem, and how the patch fixes the problem when applied.
Mark git diff --check as inline code
merged with puppet.git