(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.
(maint) Adding missing doc comments for regex adapter.

Adding missing doc comments to make doxygen happy.
(maint) Prevent loading of ruby if --no-custom-facts is specified.

If the --no-custom-facts option is given to cfacter, don't bother loading Ruby.
(CFACT-56) Implement aggregate resolutions in Ruby API.

Implementing Facter::Core::Aggregate with chunk and aggregate methods.

This allows for aggregate resolution types and conforms to Ruby Facter's
implementation of defaulting to a deep-merge of chunks.