(CFACT-151) Add path fact

Add the path fact that emits the environment variable PATH. Also
restructure adding facts to have a set of common facts that apply to all
platforms.
(doc) Simplify Windows build instructions

Use CMAKE_PREFIX_PATH instead of having separate variables for each
project, and install all projects to the same location.
Merge pull request #226 from MikaelSmith/bug/master/CFACT-151-add-path-fact

(CFACT-151) Add path fact
(maint) Fix unescaped '\' character in doc comment.

Fixing unescaped '\' character in doc comment.

This was causing doxygen to treat it as a command.
(CFACT-145) Replace trace command line option with log-level.

Replacing the trace command line option with a more generic log-level
option that allows the user to set the output logging to trace, debug,
info, warn, error, or fatal.

The trace command line option is going to be re-implemented as the same
option used by Ruby Facter: logging Ruby stack traces.  This will make
the --trace option backwards compatible and make it integrate more
easily with Puppet.
(CFACT-145) Implement trace command line option.

Implementing the trace command line option to mean "log ruby exceptions
with stack traces" like it does in Ruby Facter.

This also adds the methods Facter.trace and Facter.trace? to the cfacter
Ruby API.
Merge pull request #227 from MikaelSmith/doc/master/simplify-Windows-instructions

(doc) Simplify Windows build instructions
(CFACT-145) Implement Facter.debugging and Facter.on_message.

Implementing Facter.debugging and Facter.on_message in the Ruby API.
This enables logged messages to be intercepted by clients like Puppet.

Adding the "none" log level that disables log output.

Adding --color and --no-color options to control cfacter's log coloring.

This commit also silences the noisy output (and often confusing) log
output during unit testing.
Merge pull request #229 from peterhuene/cfact/145

(CFACT-145) Implement Ruby API looking hooks for client applications like Puppet.

* peterhuene-cfact/145
  (CFACT-145) Implement Facter.debugging and Facter.on_message.
  (CFACT-145) Implement trace command line option.
  (CFACT-145) Replace trace command line option with log-level.
  (maint) Fix unescaped '\' character in doc comment.
(CFACT-145) Fix segfault when libruby is not found.

When setting up whether or not stack traces should be printed with
exception messages, we set the option on the ruby object outside of
where it is being checked for null.

The fix is simply to move the line up inside the block where ruby is
valid.
Merge pull request #230 from peterhuene/cfact/145

(CFACT-145) Fix segfault when libruby is not found.
(maint) Remove openssl version from README.

Removing the openssl version requirement from the README.  We have no
hard requirement on openssl version; the version presented here was
mostly a suggestion.  Removing it to avoid confusion.
Merge pull request #232 from peterhuene/maint

(maint) Remove openssl version from README.
(CFACT-165) Build cfacter for lucid and squeeze
(maint) Define a minimum of 1 job to run

Prior to this commit, on some systems, `nproc` wasn't available on the
system. Since we use this to define the job threading for building with
cmake, having nproc not be defined left us calling `make -j`. This
basically tells make to build with an unlimited number of jobs, eating
up all available system memory, making the build fail with `virtual
memory exhausted: Cannot allocate memory`. This commit changes how we
are defining the number of jobs to thread at once. We want to use
`nproc` when we can, but when we cannot, we just set it at `1`. Ideally
we build with `nproc+1`, so this ensures that we are not eating up all
available memory, and are running jobs at maximum efficiency when
possible.
(maint) Update buildtime requirements

CFacter has a soft requirement on openssl >= 1.0.1g, but it will still
build with other versions of openssl. Since we want to enable as much
functionality in our builds, we want to link against openssl if
possible. Older versions of debian/ubuntu only have openssl in the 0.9.8
range, so when it comes to runtime dependencies, we want to allow the
user to install whatever libssl is available on the system. In this
case, we have a choice between libssl1.0.0 (for openssl1.0.1) or
libssl0.9.8.

Also, it was a little silly that we were using libcurl4-gnutils, rather
than libcurl4-openssl. I believe the original choice was rather
arbitrary, but since we're using openssl here anyway, it makes sence to
use that version of libcurl.
Merge pull request #231 from melissaanne/master

Build cfacter for lucid and squeeze
(CFACT-137) Define UNICODE on Windows

Force use of Unicode APIs on Windows by defining UNICODE and _UNICODE,
following the recommendation of utf8everywhere.org, and convert to and
from UTF16 for the API calls as needed.
(CFACT-137) Add Boost.Nowide for Windows UTF-8

Add the Boost.Nowide (candidate) library for UTF-8 aware standard library
wrappers on Windows.
Replace our own to_utf8/to_utf16 and environment manipulators with
Boost.Nowide. Also use it for fstream/fopen. cout/cerr aren't replaced due
to the dependency on building a binary object, to be resolved later.
(CFACT-137) Use Boost.Nowide cout/cerr adapters

Use the Boost.Nowide cout/cerr adapters that ensure UTF-8 will be printed
correctly on Windows. Requires building the Boost.Nowide library on
Windows, and adds tests for the library.