(CFACT-12) Implement external facts in YAML files.

Implementing external fact support for facts defined in YAML files.
Adding --external-dir and no-external-dir options to cfacter.
(maint) Make array_value and map_value mutable.

Allowing adding new elements to array_value and map_value.
Removing vector/map constructors from both, respectively.
Removing elements member that returns the underlying vector/map respectively.
Adding size, empty, and each members for consistency.
Updating tests for new interface.
(maint) Fix resource leak in scoped_bio.

Fixing resource leak in scoped_bio where the base constructor wasn't being called so the deleter function wasn't set.
Removing the default base constructor to prevent this from happening in the future.
(CFACT-12) Implement external facts in JSON files.

Implementing a JSON external facts resolver.
Adding scoped_file to scope FILE*.
Fixing tests where ASSERT_EQ was used for doubles (ASSERT_DOUBLE_EQ should be used instead).
(maint) Change cfacter logging output from stdout to stderr.

Fixing outputting of debug/info/warning/error/fatal messages to stderr instead of stdout.
This allows users to redirect the output to /dev/null to ignore those messages but still get the fact output.
(CFACT-12) Sort external fact files.

Sorting the external fact files so that we process them in alphabetical
order rather than discovery order, which is file system dependent.
(maint) Fix execution_failure_exception to derive from execution_exception.

Fixing execution_failure_exception to derive from execution_exception instead of runtime_error.
(maint) Add each_line string util function.

Adding an each_line string util function to cfacter.
(CFACT-12) Fix external fact precedence, filtering, and platform-specific resolving.

Fixing external fact precedence so that external facts are resolved after built-in facts.
Fixing external fact filtering so that we remove resolved external facts that aren't in the filter.
Moving external fact resolver list to be platform specific.  This will allow different execution resolving implementations.
(CFACT-12) Implement external facts in the gem.

Implementing external fact searching in the gem.
Adding documentation to cfacter gem methods.
(maint) Add gem testing to Travis CI.

Updating Travis script to build, install, and test the cfacter gem.
(CFACT-12) Implement external facts from executable scripts.

Implementing executing files to populate external facts.
Any executable files in the external facts directories are run.
Any output line of key=value is turned into a string fact.
(maint) Fix crash when missing interface name or address.

When enumerating interfaces in the BSD network facts provider, check
that ifa_addr and ifa_name are populated for the interface. These
members are allowed to be nullptr.

Fixing the unnecessary copy of the netmask for IPv6 address-to-string
conversions.
Replacing the use of inet_ntoa with inet_ntop.
(maint) Fix inability to lookup netmask6 and network6 facts.

The networking facts provider did not include the netmask6[_*] and
network6[_*] facts in its constructor.  As a result, we couldn't query
these facts directly on cfacter's command line.
(maint) Enable better crash reporting in Travis.

For the native unit tests, use libSegFault.so to print stack traces for
a crash.

For both the native and ruby tests, pipe the output through c++filt,
which will demangle C++ symbols in any stack traces.
(CFACT-12) Implement external facts from text files.

Implementing reading text files to populate external facts.
Any line of key=value is turned into a string fact.