(CFACT-2) Add Google's RE2 library to cfacter.

Adding Google's RE2 library to cfacter's build.

We can now include <re2/re2.h> and make use of the library.

See https://code.google.com/p/re2/ for more information about the library.
Merge pull request #7 from peterhuene/re2

(CFACT-2) Add Google's RE2 library to cfacter.
(maint) Update to build out-of-source.

Updating CMake files to support building "out-of-source".  This is where
you create a directory specifically for containing the build files and
generating the Makefile in that directory.  In addition to keeping the
source directories from being cluttered with build outputs, this also
allows us to generate different CMake configurations (debug vs. release,
for example) side-by-side.

Moving the rapidjson source out of the lib directory and into the vendor
directory.
Merge pull request #8 from peterhuene/vendor/rapidjson

(maint) Update to build out-of-source.
(CFACT-3) Refactor library and implement kernel/os facts.

NOTE: this removes all but the kernel-related facts and JSON output.
      the removed facts and JSON output will be added back in subsequent commits.

Refactoring the cfacter library to seperate out types into various related namespaces.
Adding an execution framework for running arbitrary external commands from fact resolutions.
Adding a resolver type responsible for resolving one or more facts.
Adding a fact type that represents a name-value pair.
Adding a values that represent simple strings or arrays ("hash" value still TODO).
Adding utility string functions.

The following facts were added:
  kernel
  kernelmajrelease
  kernelrelease
  kernelversion
  lsbdistid (Linux)
  operatingsystem
(CFACT-3) Fix unnecessary element in execution arguments vector.

There is an off-by-one error when passed a nullptr for arguments in
execute.  This causes the vector of argument pointers to be one element
too big.  However, since the element is zero-initialized, the extra null
isn't causing any harm other than allocating one pointer too many.
(CFACT-3) Fix fact resolution cycle detection.

Because the resolver entries were removed before calling resolve,
any cycle in the fact resolution was broken because a nullptr was
returned instead.  By removing the resolver entries after the resolve
occurs, we can properly detect a resolution cycle.
(CFACT-3) Fix cpplint target.

The refactoring and the previous change to support generating CMake
files into sub-directories broke the cpplint target.

The fix is to properly glob recursively for source files and also
reference the python script based on the project source directory.
(CFACT-3) Fix cpplint errors.

Fixing the cpplint script to treat .hpp files as headers.
Fixing all the various errors cpplint is currently complaining about.
(CFACT-3) Remove unnecessary fact type.

The fact type as just functioning as a key-value pair after the last
refactoring. It was therefore redundant given that the fact_map already
maps a name to a value.
(CFACT-3) Remove spawn of uname in favor of uname syscall.

There is a POSIX uname function we can use rather than spawning the
uname utility. Replace calls to execute with a single call to uname.
(CFACT-3) Code review feedback changes.

Fixing comments made to GH-9.
Merge pull request #9 from peterhuene/facts/linux

(CFACT-3) Refactor library and implement kernel/os facts.
(CFACT-3) Implement LSB facts.

Implementing the remaining LSB facts:
- lsbdistrelease
- lsbdistcodename
- lsbdistdescription
- lsbmajdistrelease
- lsbminordistrelease
- lsbrelease
Merge pull request #10 from peterhuene/facts/lsb

(CFACT-3) Implement remaining LSB facts.
(CFACT-3) Implement osfamily fact.

Implementing the osfamily fact in the base POSIX provider.
A future Windows implementation can simply return the kernel fact.
(CFACT-3) Implement the operatingsystemrelease fact.

Implementing the operatingsystemrelease fact for all platforms except
Solaris and Windows.

Implementing additional utility functions.

Moving various hardcoded values for OS, OS family, and release files
into a single location.
(CFACT-3) Implement operatingsystemmajrelease fact.

Implementing the operatingsystemmajrelease fact for the various Linux
distros it is confined to.
Merge pull request #11 from peterhuene/facts/os

(CFACT-3) Implement more operating system facts.
(maint) Make trim_output the default for execute.

Currently none of the calls to execute are using the default options and are instead using just trim_output.  As this is the most common usage so far, set it as the default execution options.