(CFACT-51) Link and run cfacter on Windows

Makes it possible to link the cfacter project on Windows using MinGW.
The cfacter executable can run, but produces no facts.
Merge pull request #97 from MikaelSmith/task/master/CFACT-51-link-run-on-windows

(CFACT-51) Link and run cfacter on Windows
(maint) Fix tty logging output.

A prior check-in restructured tty logging, but had a bug in the switch
statement. This fixes that bug by adding break statements for each case.
Merge pull request #103 from MikaelSmith/maint/master/fix-logging-output

(maint) Fix tty logging output.
(maint) Fix improper use of function try blocks.

In C++, function try-blocks implicitly rethrow the caught exception.
Therefore, the use of them in the regex adapter is incorrect.
Additionally, since the regex adapter isn't fully constructed, the _err
member cannot be used in a catch block and doing so will likely result
in a segfault.

The proper fix is to call the assign member and catch the exception it
throws.
(CFACT-73) Fix binding to the latest ruby available.

Instead of just assuming there's a symlink to the latest ruby library
available, search the library directory for all versions of libruby and
use the latest one.

This allows us to automatically find libruby on systems where the
symlink does not exist (such as Ubuntu).
(CFACT 70) make uname return value conform to posix standards

Before this patch, we used to compare the `uname(...) != 0` for failure.
However posix only states that uname(...) returns a non negative value on
success, and returns -1 on failure. This patch changes the comparison to
`uname(...) == -1` for failure. This was also necessitated by the behavior
of solaris which returns a nonzero value on success.

This commit also deletes the previous solaris/kernel_resolver since the
patch makes this kernel_resolver identical to posix.
(CFACT 70) remove redundant spaces

Remove redundant blank line
Merge pull request #106 from vrthra/fix/cfact-70/uname-patch

(CFACT 70) make uname return value conform to posix standards
(maint) Change execution logging namespace to be just "execution".

Currently the shared execution implementation logs to the
"execution.windows" namespace, which is incorrect.  Changing all of the
related namespaces to be just "execution".
Merge pull request #107 from peterhuene/maint/logging

(maint) Change execution logging namespace to be just "execution".
(CFACT-88) Replace string utility functions with those in Boost.

Replacing the following string utility functions with Boost string
algorithms:

* starts_with
* ends_with
* ltrim
* rtrim
* trim
* tokenize
* split
* to_lower
* to_upper

Also removing the unused ci_string type.  Boost has functionality for
doing case insensitive comparisons.
(CFACT-72) Log information during ruby library search.

While searching for the ruby library to use, we should be logging where
we are looking for the library and the candidate libraries we have
found.
(CFACT-51) Resolve DLL search issues in dev environment

Switch Boost to static libraries, to avoid having to ship Boost DLLs.
Put all binaries in the same directory to avoid DLL search path issues in dev environment.
Merge pull request #105 from peterhuene/custom/facts

(CFACT-72) (CFACT-73) Fixes for how libruby is discovered.
(CFACT 70) Add the kstat kernel information library to solaris linking

KStat provides information that is useful for resolving several
facts about the solaris kernel. This patch links the kstat library to cfacter
(CFACT 70) publish uptime fact for solaris

Before this patch, solaris10 did not report uptime. This patch adds the support
of uptime fact to solaris. It does this by relying on kstat library, which is
used to lookup kernel information. If the library call fails, it relies on
/bin/uptime for the uptime fact.
(CFACT 70) Add processor facts for solaris

This patch adds solaris specific processor facts. For this it utilizes the
kstat linked datastructure, which is added in by kstat library. Solaris
has the concept of three levels of processing units: physical CPUS, multiple
cores per CPU and, multiple hardware threads per core. This is reflected in
the provided facts.
(CFACT 70) Add posix facts id and timezone to solaris

This patch adds the posix timezone and id facts (unchanged) to solaris
These are the only posix facts left that can be added directly to solaris
without change in behavior.
(CFACT 70) Correct the operating system resolver to match facter

Previously, cfacter output for osfamily (SunOS), operatingsystemrelease(5.10),
and operatingsystem (SunOS) depended on the posix implementation. However,
the ruby facter implementation provides osfamily (Solaris),
operatingsystemrelase (10_u11), and operatingsystem (Solaris) which are
different from the barebones posix. This patch corrects the cfacter so that
it outputs values matching ruby facter.