(maint) Fix detection of xenu hypervisor.

The code was checking for the existence of only a file instead of a
file or directory like we have under Ruby Facter.

This caused us to fail to detect the xenu hypervisor (noticed on EC2,
which uses Xen).  The fix is to change the detection to just an "exists"
call to make the Ruby behavior.
(maint) Fix missed header file for CFACT-139 fix

CFACT-139 moved code using the system_error call, but didn't move the
required header file. CI missed it because unity-build ensured the header
was there.
Merge pull request #204 from melissaanne/master

(CFACT-149) build for el 6
Merge pull request #206 from MikaelSmith/maint/master/fix-missed-system_error-merge

(maint) Fix missed header file for CFACT-139 fix
(CFACT-18) Implement EC2 facts.

Implementing the ec2_metadata and ec2_userdata facts in libfacter.

These facts will be resolved when under a kvm/xen hypvervisor and the
BIOS version has "amazon" in it.

The ec2_metadata and ec2_userdata facts match exactly to what is output
in Ruby facter.

As the "flattened" facts from ec2_metadata were marked deprecated in
Ruby facter, we've dropped support for them.
(maint) Fix quoting of keys and values in YAML output.

Previously we were just always double quoting all values in the YAML
output to workaround the fact that yaml-cpp will output numerical string
values without quotes which loses their type information as strings.

However, this also affects keys within maps.  Rather than quoting every
single string in the YAML output, which is an eyesore, this commit works
around the yaml-cpp limitation by quoting anything that looks numerical
in keys and values.
Merge pull request #205 from peterhuene/facts/ec2

(CFACT-18) Implement EC2 facts.
(CFACT-118) Fix typo for Windows serialnumber fact

Missed during review/rewrite of dmi facts. Corrects query for serialnumber
so it now retrieves the fact.
Merge pull request #208 from MikaelSmith/task/master/CFACT-118-fix-typo

(CFACT-118) Fix typo for Windows serialnumber fact
(CFACT-155) Fix POSIX execution to redirect to a writable /dev/null.

When not redirecting stderr to stdout, libfacter redirects stderr to
/dev/null on POSIX platforms.  However, the open call was passed the
read-only flag, making the stderr descriptor unwritable.

If a child process were to check if write failed on stderr (lsb_release
does, for example), then the process would fail when it would otherwise
succeed.

The fix is to allow the child process to write to the descriptor.
Merge pull request #209 from peterhuene/cfact/155

(CFACT-155) Fix POSIX execution to redirect to a writable /dev/null.
(CFACT-117) Add Windows networking facts

Adds Windows networking facts, implemented according to facter's behavior.

Major changes were:
- Refactoring the wmi API to return a vector of objects when multiple
  objects are returned, rather than returning those results split into
  ranges of values.
- Returning array values from wmi.
- Added a utility for querying the registry on Windows.
- Require Windows Vista as the minimum OS version.

We use forward-declaration instead of including Windows OS headers to avoid
polluting headers with too many includes/defines.

This doesn't really simplify anything because Unity builds still include
everything, but Unity builds are only a stepping stone until we have a
better C++ modular build solution.
Merge pull request #207 from MikaelSmith/task/master/CFACT-117-Windows-networking-facts

(CFACT-117) Add Windows networking facts
cfacter el4 modifications