(pup-1766) Remove duplicate test
(pup-1766) Add support for multiple defaultfor's

Prior to this change, it was possible to specify a defaultfor to
cover, say, multiple osfamily's e.g. with:
    defaultfor :osfamily => [:os1, :os2]
Or it was possible to specify a more complex hash, e.g. with
    defaultfor :osfamily => :os1, :operatingsystemmajorrelease => "42"

But if more specificity for just one of the operatingsystem values was
needed, defaultfor couldn't support that. This change allows for this, e.g.:
    defaultfor :osfamily => :os1  # all variants of os1
    defaultfor :osfamily => :os2, :operatingsystemmajrelease => "42"  # only release #42 of this os

To support this change Provider defaults is now an array of hashes (formerly,
it was a merge of the hashes provided by all defaultfor invocations), which requires
commensurate updates to the specificity method and the dochook.

There are also some new spec tests for representative defaultfor combinations, and
two spec tests needed to be updated with the expectation that Facter will be invoked
to assess defaultprovider specificity.
(pup-1766) Set systemd as a default provider for the service type on rhel7
(pup-1766) Add support for :feature to defaultfor

Previous to this change defaultfor had no support for a key
of :feature, however the exec/posix.rb provider assumed
there was such support.

The only reason this worked was that the specificity method
evaluated hash length independent of whether the hash matched
reality in anyway. E.g. exec/posix.rb could just as easily have
specified:
  defaultfor :foo => :nonsense
And it would have a specificity of 1 (yay).

This stops working with the changes in this pull request to
make specificity actually evaluate whether the specified hash
is match in anyway.

So, this commit adds the :feature support to defaultfor which
exec/posix.rb already assumed it had. That file was the only
use of 'defaultfor :feature' I found, but adding this support
seems like potentially useful as an enhancement.
(pup-1766) Break out at first failed match

The previous version of default_match walked through all of the
hash elements even after finding a failure. This patch uses all?
to break out at the first failed match; as an additional benefit,
the code is cleaner.
Merge pull request #2391 from kylog/issue/rhel7-systemd-defaultprovider

pup-1766 make systemd the defaultprovider for service on rhel7