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
(CFACT-138) Implement Google Compute Engine fact.

Implementing the gce fact that returns instance metadata for Google
Compute Engine virtual machines.

The structure of the fact's data is dependent upon the JSON being
returned from Google's metadata endpoint.
(maint) Command line queries should be case-sensitive.

Previously we were lowercasing each query from the cfacter command line.
This prevented us from being able to query map elements that are not all
lowercased.

cfacter should simply be case-sensative from the command line, but
remain case insensitive via the Facter API.