Merge branch '1.7.x'

* 1.7.x:
  (packaging) Remove f16 from mocks to build as it is EOL
  (packaging) Add raring to the default cows list
(#14522) Force /proc/self/status encoding to valid UTF-8 (try 2)

Without this patch the previous attempt to fix issue 14522 is
insufficient because the String#encode method is a no-op when the source
and destination encodings are the same encoding, even if there are
invalid byte sequences.

This is a problem because we're still getting unhandled `invalid byte
sequence in UTF-8` errors running the specs.

This patch addresses the problem by changing encoding from UTF-8 to
UTF-16, replacing all invalid byte sequences with the default unicode
string of "uFFFD"  We then convert back to UTF-8 to guarantee only valid
byte sequences remain.
Merge branch '1.7.x'

Conflicts:
	lib/facter/virtual.rb
(maint) Use RSpec 2.9 expectations

We have RSpec 2.11 listed in the project Gemfile but CI is still using
2.9. This commit switches the expectation syntax to the older version
for compatibility.
Merge branch 'maint-rspec_29_compat' into 1.7.x
Merge branch '1.7.x'
Merge branch 'stable'
Merge branch 'stable'

* stable:
  (maint) Make facter gemspec report correct version
  (maint) Move facter.gemspec to .gemspec

Conflicts:
	.gemspec
(#17710) Refactor the IP module

This pull request aims to refactor the Facter::Util::IP module with kernel
specific classes adhering to a common interface. This pull request eliminates
case statements and crazy kernel conditionals within methods. Additionally, this
eliminates the giant REGEX_MAP constant at the top of the Facter::Util::IP
module and adds some documentation to methods that were previously left
undocumented.

This also removes the untested network.rb fact and moves in into interfaces.rb
since they are dynamically generated by the name of the interfaces. They now
have tests.

This supports the new on_flush method.

The related ticket is here: http://projects.puppetlabs.com/issues/17710
(maint) Avoid executing ifconfig from the specs

Without this patch the spec examples will execute /sbin/ifconfig.  This
is a problem because the test will fail on platform which do not have
ifconfig, like Windows.

This patch addresses the problem by expecting
Facter::Util::Resolution.exec is called, preventing the system command
from being executed.

The patch also re-words the example to describe the exact behavior being
tested.
(maint) Fix Facter::Util::IP.exec_ifconfig examples

Without this patch the Facter::Util::IP.exec_ifconfig examples only set
stub methods, they don't actually set expectations that ifconfig is
executed as the examples describe.

This patch addresses the problem by updating the examples to reflect the
intent of the behavior expressed in the description of the example.