(#17794) Specify how zfs facts behave when tools are configured

Without this patch applied we don't have an example of how the
zfs related facts behave when the client tools are configured after the
facts have been defined and loaded but before they've been resolved most
recently.

The expectation expressed by this patch is that the facts will resolve
when the client tools are available and will not resolve if the client
tools are not available.  Installing the client tools should be
sufficient to cause the facts to resolve.

This patch also changes the implementation to make the expected behavior
of refreshing the fact values using the code specified in the setcode
block.

Squash into
Merge branch 'maint/1.7.x/zfs_resolvers' into 1.7.x

* maint/1.7.x/zfs_resolvers:
  (#17794) Specify how zfs facts behave when tools are configured
Merge branch '1.7.x' into 2.x

* 1.7.x:
  (#17794) Specify how zfs facts behave when tools are configured
Merge branch '2.x'

* 2.x:
  (#17794) Specify how zfs facts behave when tools are configured
(#16626) Fix handling of bonded Linux interfaces

Array#to_s doesn't produce the right format for hwaddrre to match, so
use #join instead.
(#16626) Exercise IP.get_interface_value("bond0","macaddress")

Without this patch, the behavior of the utility method
Facter::Util::IP.get_interface_value("bond0", "macaddress") has no
examples in the form of automated tests.

This patch adds test coverage for this specific code path.
(Maint) Add YARD doc for get_interface_value

Without this commit there is no clear documentation for the
Facter::Util::IP.get_interface_value class method.  This is a problem
because the method behaves unexpectedly in some situations and is not
intended for public API use.

This patch fixes the problem by clearly documenting the method and
marking it as a private API.
Merge branch 'josb-ebaysf-ticket/1.6.x/16626_ruby_19_compat_fix' into 1.6.x

* josb-ebaysf-ticket/1.6.x/16626_ruby_19_compat_fix:
  (Maint) Add YARD doc for get_interface_value
  (#16626) Exercise IP.get_interface_value("bond0","macaddress")
  (#16626) Fix handling of bonded Linux interfaces
Merge branch '1.6.x' into 1.7.x

* 1.6.x:
  (Maint) Add YARD doc for get_interface_value
  (#16626) Exercise IP.get_interface_value("bond0","macaddress")
  (#16626) Fix handling of bonded Linux interfaces
Merge branch '1.7.x' into 2.x

* 1.7.x:
  (Maint) Add YARD doc for get_interface_value
  (#16626) Exercise IP.get_interface_value("bond0","macaddress")
  (#16626) Fix handling of bonded Linux interfaces
Merge branch '2.x'

* 2.x:
  (Maint) Add YARD doc for get_interface_value
  (#16626) Exercise IP.get_interface_value("bond0","macaddress")
  (#16626) Fix handling of bonded Linux interfaces
Add quantal to default cows list.
Merge pull request #373 from haus/maint/1.6.x/add_quantal_cow

Add quantal to default cows list.
Merge branch '1.6.x' into 1.7.x

* 1.6.x:
  Add quantal to default cows list.
Merge branch '1.7.x' into 2.x

* 1.7.x:
  Add quantal to default cows list.
Merge branch '2.x'

* 2.x:
  Add quantal to default cows list.
(#17917) Allow case equality confinement matching

Without this patch applied the confine functionality is limited to
testing equality.  This is a problem because some facts have different,
but similar, values over time.  For example, the use case motivating
this feature is:

    I have some facts I want to run on all generations of dell machines,
    but the manufacturer fact has changed between them so I want to be
    able to use something like /.*Dell.*/

This patch implements case equality which provides a superset of the
regular expression matching that addresses the problem.

This patch also cleans up the spec tests around confines a bit.
Merge branch 'feature/1.7.x/dalen-regexp-confine' into 1.7.x

* feature/1.7.x/dalen-regexp-confine:
  (#17917) Allow case equality confinement matching
Merge branch '1.7.x' into 2.x

* 1.7.x:
  (#17917) Allow case equality confinement matching
Merge branch '2.x'

* 2.x:
  (#17917) Allow case equality confinement matching