(maint) Add API documentation generation.

Adding support for generating API documents using doxygen.
Updating all source files so that there are no doxygen warnings.
Adding documentation generation to Travis CI to ensure no future
warnings.
Ensuring facter library header files are free from implementation (save
templated types).
(maint) Return unique_ptr<T> from make_value.

Instead of returning unique_ptr<value> from the utility function make_value, return unique_ptr<T> instead.
unique_ptr<T> can be safely moved into unique_ptr<value> (where T derives from value).
This makes using array and map values easier.
(maint) Fix domain and fqdn facts when domain resolves to hostname.

In the case where the domain is the same as the hostname, treat it like the domain could not be resolved.
This prevents us from setting the domain and fqdn facts to the same value as the hostname.
Ruby facter returns nil for domain and fqdn facts under this condition.
(CFACT-33) Add dhcp_servers fact for OSX.

Adding a dhcp_servers fact for OSX.
This also makes OSX smarter about which interface is considered to be "primary".
Previously we were looking for the first interface with an assigned address other than loopback.
Now we look up the default route's interface and fallback to the previous logic if need be.
(maint) Update example in README to configure log4cxx.

Adding code to example to configure log4cxx.
Without this, users would get a warning from log4cxx.