(CFACT-66) Remove log4cxx

Replaced log4cxx with Boost.Log. Supports a similar structure of configuring formatted
sinks for output, with filtering based on log_level.
(CFACT-66) Update trace and readme, add comments, and re-org.

Added macros for log_level::trace.
Updated README to reflect removing log4cxx.
Added comments for new functions in logging.
Change logging prefix used for execution output to differentiate it.
Re-organized logging source so only colorizing is OS-specific.
Merge pull request #85 from MikaelSmith/task/master/CFACT-66-replace-log4cxx

(CFACT-66) Remove log4cxx
(maint) Disable warning register-deprecated.

This warning is specific to Clang, and marks register as deprecated.
Boost still uses register, and we're unlikely to (plus it doesn't
cause any harm when it's used), so the warning is now disabled.
Merge pull request #87 from MikaelSmith/maint/master/Disable-register-deprecated-warning

(maint) Disable warning register-deprecated.
(CFACT-44) Add missing Facter.version method.

Adding a missing Facter.version method that returns
Facter::FACTERVERSION.
(CFACT-44) Support boolean values in confines.

Support true and false in a Ruby confine hash.
(CFACT-44) Implement exec and which on Facter::Util::Resolution.

Implementing exec and which singleton methods on
Facter::Util::Resolution.

These call directly into the corresponding methods on Facter::Core::Execution.
(maint) Remove incorrect doc comment in #ifdef'd code.

Removing extraneous template argument doc comment.
(maint) Remove incorrect doxygen line
(doc) Remove duplicate info and add details.

OpenSSL was mentioned twice, so the entry under Visual Studio was fixed.
Some download instructions were also clarified.
Merge pull request #88 from MikaelSmith/doc/master/update-windows-instructions

(doc) Remove duplicate info and add details.
(maint) Clean removed package references.

Some references to RE2 and LOG4CXX were missed when removing the packages.
Remove those missed references.
Merge pull request #89 from MikaelSmith/maint/master/clean-removed-lib-refs

(maint) Clean removed package references.
Merge pull request #86 from peterhuene/custom/facts

(CFACT-44) More fixes for Ruby compatibility.
(CFACT-44) Bind to loaded Ruby (if present) instead of searching.

Currently we always search the file system for a Ruby library.
While we do check to see if the library found has already loaded,
if libfacter finds a different library than the already loaded Ruby
library, a separate VM will be created that will be isolated from
the original VM.  This would prevent facts from populating correctly.

POSIX libdl (and Windows through a different mechanism) has a way
for us to bind to the loaded Ruby without having to search the file
system.  Specifically, dlsym will search for symbols exported by
the initially loaded objects and any objects that were loaded as
global.  Ruby thankfully links against libruby such that we can
discover libruby's exports this way.  When libfacter is running
under Ruby, we should now reliably function under the same Ruby VM.
Merge pull request #90 from peterhuene/custom/facts

(CFACT-44) Bind to loaded Ruby (if present) instead of searching.
(CFACT-44) Allow Ruby classes to be instantiated from Ruby.

Currently the Ruby classes implemented in libfacter can only be
instantiated from C++. If one of the classes is instantiated from Ruby,
we fail to associate the Ruby instance with the underlying C++ type.

To fix this, define an allocation, mark, and free callback for each type
we support allocating from Ruby.  The allocate function is responsible
for creating the underlying C++ type when the Ruby type is allocated.
The mark function is responsible for marking referenced VALUEs during
the mark phase of GC.  The free function is responsible for freeing the
underlying C++ type when the GC deallocates the Ruby object.
(CFACT-44) Replace cfacter gem with libfacter Ruby API.

The cfacter gem implementation is unnecessary now that we implement the
Ruby API in libfacter.  Therefore, remove it in favor of directly
calling into libfacter from Ruby.

To implement the gem's behavior, the C++ Facter module implementation
now implements the following methods:

* Facter.flush (and implemented on_flush in resolutions)
* Facter.list
* Facter.to_hash
* Facter.each
* Facter.clear
* Facter.reset
* Facter.loadfacts
* Facter.search
* Facter.search_path
* Facter.search_external
* Facter.search_external_path

Additionally, the logic for loading Ruby facts has moved out of the
collection (where it didn't belong) and moved into the C++ Facter
module.

We now follow the old Facter's loading design of first trying
to load a fact by file name and then falling back to loading all facts
if the fact can't be found.
(CFACT-44) Update for code review feedback.

* Add some comments regarding MRI documentation.
* Add some comments regarding VALUE and the use of "volatile".
* Remove unused rb_undef_alloc_func import.
* Use ranged for loop instead of iterator for loop in chunk.cc.
* Fix resolution::suitable to destruct iterator if user block raises.
* Log failures to canonicalize ruby search paths.