(maint) Log any static ruby libraries found.

To help users understand that static ruby libraries aren't supported,
log a debug message notifying the user of the library and a way to fix
the problem.
Merge pull request #184 from peterhuene/rbenv

(maint) Log any static ruby libraries found.
(maint) Make WMI local static var const

Allow further optimization by making a local static string constant.
Merge pull request #185 from MikaelSmith/maint/master/make-static-var-const

(maint) Make WMI local static var const
(CFACT-127) Fix searching lib64 only for 64-bit builds.

The lib64 directory should only be searched if it's a 64-bit build and
it is present.
Merge pull request #186 from peterhuene/rbenv

(CFACT-127) Fix searching lib64 only for 64-bit builds.
(CFACT-111) Fix crash-on-exit in Win Server 2008r2

Calling CoUninitialize should not be done at exit, as DLL shutdown can
mess it up. Create a re-usable class, wmi, that can be used to manage
the connection. As an optimization we share a copy between all resolvers
that need it, using shared_ptr to ensure it's released when no longer
needed.

CoInitSecurity is unsafe to call more than once in a process/thread, and
the defaults are sufficient. Therefore we let the API ensure security is
setup instead of doing so explicitly.
Merge pull request #187 from MikaelSmith/task/master/CFACT-111-fix-Server-2008-crash-on-exit

(CFACT-111) Fix crash-on-exit in Win Server 2008r2
(maint) Cleanup uses of r-value references in parameters.

Remove r-value references used in parameters to favor pass-by-value.
Passing by-value gives the caller the option to move or copy depending
on whether or not an r-value is provided and the callee moves the
parameter accordingly.
(maint) Remove unused "resolve" parameter from collection methods.

With the resolver refactoring, this parameter is no longer used.
Removing it to simplify code.
(maint) Add missing doc comments.

Adding some missing doc comments that slipped through CI.
(maint) Remove unused cycle detection in fact resolvers.

Because of the way we need to force a resolver to resolve when a fact it
is responsible is added to the collection (i.e. from a custom or
external fact), we remove a resolver from the collection prior to doing
the resolve.

As a result, the old cycle detection isn't used because the resolver
isn't in the collection during resolution.  Instead of throwing a cycle
detection, we break the cycle and return nullptr for the requested fact.
(CFACT-134) Hide duplicated facts in cfacter output.

Hiding duplicated facts that are now respresented in structured data.
The facts are still present, just hidden from cfacter output by default.
(CFACT-134) Implement identity structured fact and hide id/gid.

Implementing the identity structured fact and hide the id/gid facts from
command line output by default.
(doc) Fix typo
(CFACT-134) Add OSX info to os structured fact.

Adding OSX build, product, and version to the os structured fact and
hide the macosx_* facts from output by default.
(CFACT-134) Add system_profiler structured fact.

Add system_profiler structured fact and remove the existing system
profiler related facts from the output by default.
(CFACT-134) Add dmi structured fact and cleanup DMI facts.

Adding a dmi structured fact that represents DMI data (TODO: come up
with a better name than "dmi"?).

Also hidding the existing DMI facts from default command line output.
Merge pull request #188 from peterhuene/facts/cleanup

(CFACT-134) General cleanup of cfacter command line output.

* peterhuene/facts/cleanup:
  (CFACT-134) Add dmi structured fact and cleanup DMI facts.
  (CFACT-134) Add system_profiler structured fact.
  (CFACT-134) Add OSX info to os structured fact.
  (CFACT-134) Implement identity structured fact and hide id/gid.
  (CFACT-134) Hide duplicated facts in cfacter output.
  (maint) Remove unused cycle detection in fact resolvers.
  (maint) Add missing doc comments.
  (maint) Remove unused "resolve" parameter from collection methods.
  (maint) Cleanup uses of r-value references in parameters.
(maint) Update cfacter to build with static libraries

This is part of a larger effort to get cfacter packages into the hands
of users. The quickest way to do this at the moment is to statically
link all of our dependencies. Yes, this will increase the size of the
binaries we're providing, but ultimately will allow easier access to
these packages for our users.

This PR does multiple things along those lines. First, it allows us to
specify if we want to use the shared or static version of the yaml-cpp
library. Both are available in our build, and for our purposes, we want
the static one, while maintaining the option to easily change that
decision later. We already have this capacity in terms of the boost
libs. We're also specifying the static library choice during build time
in ext/redhat/cfacter.spec.erb

This PR is also updating the required runtime dependencies. Since we're
statically linking against dependencies that were built in-house (boost,
yaml-cpp, gcc), we no longer need to make sure those packages are
available at runtime. Therefore, those runtime dependencies were pulled
out.

I also added in the optional dependencies, so we could have the
functionality provided by those libraries available for users.