(#17612) Add Google Compute Engine support to virtual fact

Without this patch the virtual fact does not return a value that
specifically identifies Google Compute Engine.  This is a problem
because configuration decisions may depend on if the resources being
configured exist within GCE or not.

This patch addresses the problem by changing the behavior of the
`virtual` fact to return the value `gce` when running in Google Compute
Engine's cloud.

This patch uses the Google recommended and documented way to detect if
we are running on a Google Compute Engine:
https://developers.google.com/compute/docs/instances#dmi
(#17612) Follow Google docs to populate virtual => gce

Without this patch applied Facter uses lspci to determine if the system
is running in the Google Compute Engine virtual environment.  This is a
problem because Google recommends parsing the output of
/sys/firmware/dmi/entries/1-0/raw as per [Detecting if You Are Running
in Google Compute
Engine](https://developers.google.com/compute/docs/instances#dmi).
`lspci` may be unreliable over time.

This patch addresses the problem by adding a higher weight fact that
scans `/sys/firmware/dmi/entries/1-0/raw` as recommended by Google.  The
fact is confined to Linux and disables itself if
`/sys/firmware/dmi/entries/1-0/raw` does not exist in the filesystem.
Merge branch 'feature/1.7.x/17612_gce_cloud_support' into 1.7.x

* feature/1.7.x/17612_gce_cloud_support:
  (#17612) Follow Google docs to populate virtual => gce
  (#17612) Add Google Compute Engine support to virtual fact
Merge branch '1.7.x' into 2.x

* 1.7.x:
  (#17612) Follow Google docs to populate virtual => gce
  (#17612) Add Google Compute Engine support to virtual fact
(#15001) ifconfig regex will optionally match 'addr:'

Newer versions of ifconfig, as found in Fedora 17, have changed the
output format of ifconfig. This change removed the 'addr:' string which
prevents the regex from matching. This patch makes matching 'addr:'
optional.
Test data for net-tools 1.60
(#15001) Add spec examples for ipaddress fact

Without this patch we don't have an example behaviors for the ipaddress
fact.  This patch addresses the problem by adding two examples for the
facts parsing the output of ifconfig.  These examples slightly refactor
the ipaddress fact confined to Linux in order to take advantage of the
stubbed method returning the output of the ifconfig command.

Fixture data for ifconfig output is included for Ubuntu 12.04 and Fedora
17.  The notable difference with Fedora 17 is that Net Tools 1.60
removes the "addr" substring from the interface description.
Merge branch 'fix/1.6.x/15001_ifconfig_format_change' into 1.6.x

* fix/1.6.x/15001_ifconfig_format_change:
  (#15001) Add spec examples for ipaddress fact
  Test data for net-tools 1.60
  (#15001) ifconfig regex will optionally match 'addr:'
Merge branch '1.6.x' into 1.7.x

* 1.6.x:
  (#15001) Add spec examples for ipaddress fact
  Test data for net-tools 1.60
  (#15001) ifconfig regex will optionally match 'addr:'
(#15001) Use the internal loader to load ipaddress

Without this patch the fix to the ipaddress fact fails our spec tests
because the method Facter.collection.internal_loader.load should be used
to load a fact.  This patch uses the correct method call and resolves
the spec failure.
Merge branch '1.7.x' into 2.x

* 1.7.x:
  (#15001) Use the internal loader to load ipaddress
  (#15001) Add spec examples for ipaddress fact
  Test data for net-tools 1.60
  (#15001) ifconfig regex will optionally match 'addr:'
(#15708) fixes facter file mappings for pkgbuild

changes ext and var to be private/etc and private/var

previous behavior would break systems running 10.5 if this was installed
as a flat package (pkgbuild's format)
Merge pull request #378 from MosesMendoza/packaging/1.6.x/fix_apple_pkging_mapping

(#15708) fixes facter file mappings for pkgbuild
Merge branch '1.6.x' into 1.7.x

* 1.6.x:
  (#15708) fixes facter file mappings for pkgbuild
Merge branch '1.7.x' into 2.x

* 1.7.x:
  (#15708) fixes facter file mappings for pkgbuild
Update lib/facter/version.rb for 1.6.17-rc1
Merge branch '1.6.x' into 1.7.x

* 1.6.x:
  Update lib/facter/version.rb for 1.6.17-rc1
Merge branch '1.7.x' into 2.x

* 1.7.x:
  Update lib/facter/version.rb for 1.6.17-rc1

Conflicts:
	lib/facter/version.rb
(#15306) Read /proc/self/status in binary mode

On at least a Joyent SmartMachine (illumos based Solaris) the file
/proc/self/status contains binary data. When read with File.read in Ruby
1.9, this is parsed as UTF-8 which fails with an exception. This patch
instead opens the file in binary mode to avoid the failure.
Merge branch 'bug/1.6.x/calmh-15306_read_proc_self_status_in_binary_mode' into 1.6.x

* bug/1.6.x/calmh-15306_read_proc_self_status_in_binary_mode:
  (#15306) Read /proc/self/status in binary mode