(CFACT-65) Replace RE2 with boost::regex

Removes dependency on RE2. Uses an adapter class and function to abstract
regular expression calls so it's easier to modify or switch packages if
necessary (for speed or Unicode support), and simplify the call interface.
(CFACT-44) CFacter gem should always return a Fact object.

Unlike Facter, CFacter doesn't make a distinction between facts that
loaded but didn't resolve (value is nil) and facts that didn't load.

Facter#[] returns nil for facts that didn't load and a Fact object for
facts that loaded but may not have resolved (value is nil).

Therefore, CFacter#[] needs to always return a fact object to keep this
expected behavior.
(CFACT-44) cfacter should only load custom fact files once.

If the same search path is specified multiple times, cfacter
will attempt to load the fact the same number of times.

To maintain the same behavior as Facter with respect to
configuring search paths, load a file only once but do so in discovery
order.
(CFACT-44) Enable a warning log level when using the gem.

Currently the gem disables all of cfacter's logging.
To get useful diagnostics when using cfacter in puppet,
configure logging at the warning level.
(CFACT-44) Custom facts should restore previous Facter module.

Currently the custom fact processing removes the existing Facter
module if present.

Instead, it should save the current module and restore it when
processing custom facts has completed.