(#11328) Add virtualisation detection for OpenBSD

Extend the FreeBSD KVM detection as it's the same trick with "sysctl
hw.model" and use "sysctl hw.product" to detect VMware, Parallels,
VirtualBox and Xen HVM.
(#11328) Fix uptime detection on OpenBSD

Of the four or so uptime detection methods, the sysctl one is the
closest however OpenBSD lacks the -b option. Using -n instead the first
number in the output will be the epoch seconds, on OpenBSD this is all
you get, but with Darwin (and probably the other *BSD's) you get the
epoch seconds, microseconds and the pretty-printed output.

New test cases added and the old ones with the endian-specific packed
output are removed.
Try to get VirtualBox info without dmidecode

/sys/devices/virtual/dmi/id/product_name:VirtualBox
(##11041) Add dmidecode as a requirement for rpm

We were implicitly relying on dmidecode to determine certain facts
without being certain that it was installed.  This change to the rpm
spec file will ensure we have dmidecode pulled in by rpm/yum as a
dependency and thus causing the correct functionality on facter.

Note this change only impacts EL based systems.  The debian packaging is
handled in another repository.

Signed-off-by: Michael Stahnke <stahnma@puppetlabs.com>
Updated CHANGELOG for 1.6.4rc1

Signed-off-by: Matthaus Litteken <matthaus@puppetlabs.com>
Updating CHANGELOG for 1.6.4 release
(#11082) Add fact operatingsystemrelease for Solaris

Algorithm plus sample input and desired output was
provided by John Warburton
(#11082) Add negative tests for operatingsystemrelease

The current behaviour of the operatingsystemrelease fact is that we have
a general operatingsystemrelease fact that will suit every platform and
returns the kernelrelease fact.

So if our solaris operatingsystemrelease fact does not work
(/etc/release not present, empty, unexpected content) facter will try
to resolve the general operatingsystemrelease fact. That is now
reflected in the tests.
Merge branch '1.6.x'

* 1.6.x:
  Updating CHANGELOG for 1.6.4 release
  Updated CHANGELOG for 1.6.4rc1
  (##11041) Add dmidecode as a requirement for rpm
(#9708) Confine facts by kernel not operating system and remove confine for hardwareisa

This will allow the following facts to continue working even when new variants
of Linux, BSD, etc are supported in the future.

* lsbmajdistrelease
* macaddress
* uniqueid

For hardwareisa the confine was removed entirely. On any system that returns
"uname -p", the value should be this fact. On systems that don't have
"uname -p", the resolution will not be used. Thus, it shouldn't be necessary to
confine the resolution by kernel.

Previously we were constantly requiring patches to be added whenever a new
Linux distribution was added. These changes should reduce this need. The fact
'operatingsystem', 'osfamily' and 'operatingsystemrelease' will still require
patches however.

New spec tests were added where they were missing.
Merge branch 'ticket/9708'

* ticket/9708:
  (#9708) Confine facts by kernel not operating system and remove confine for hardwareisa
(maint) remove redundant arch detection

The operatingsystem fact had logic to test for the existence of
/etc/arch-release twice. Removed the dead branch of code.
(#7753) Added error checking when adding resolves

Added exception handling to the fact class. When adding a resolution to
a fact, if an exception was thrown outside of the setcode block, facter
would crash. Added handling so that if an exception is thrown, facter
logs the error and discards the fact.
Merge pull request #116 from adrienthebo/ticket/1.6.x/7753-catch_exceptions_when_adding_facts

(#7753) Added error checking when adding resolves
Move Linux specific virtual tests to correct block.

 - Tests for Linux had strayed into Solaris block. Sited with other Xen tests.
Merge branch 'maint/1.6.x/move_linux_virtual_specs' into 1.6.x
Merge pull request #114 from adrienthebo/maint/1.6.x/remove_redundant_arch_detection

(maint) remove redundant arch detection
(#9789) Extend coverage of operatingsystem specs

Added more coverage of the operatingsystem fact, since it was a bit
sparse and rather critical.
Merge branch 'ticket/1.6.x/9789-add_operatingsystem_specs' into 1.6.x

* ticket/1.6.x/9789-add_operatingsystem_specs:
  (#9789) Extend coverage of operatingsystem specs
(#8279) Join ec2 fact output with commas

ec2 facts were being concatenated, which made array data harder to use.
Switched to comma delimited data.

Thanks to Hunter Haugen <hunter@puppetlabs.com> for this patch.