(CFACT-50) Modify lookup for Win-specific lib names.

OpenSSL and YAML use different library names on Windows.
(CFACT-50) Fix VC++12 errors on Windows

Default move constructors and assignment operators from C++11 are
unsupported in Visual Studio 2013.
(CFACT-50) Replace POSIX strncasecmp

Use boost ilexicographical_compare for portable case-insensitive
string compare, with Boost Range concepts for fast substring operation.
(CFACT-50) Add link_directories

Required so DLLs can be found on Windows.
(CFACT-50) Add doc for setting up Windows build.
(CFACT-50) Resolve review comments.

Make move constructor/assignment explicitly defined in all compilers.
Move definitions to the source files so we can use forward-declaration
with YAML and RE2.
Merge pull request #75 from MikaelSmith/task/master/CFACT50-compile-facter-objects

(CFACT-50) Fix compilation with Visual Studio.
(CFACT-71) Fix Ruby VM initialization.

Previously, intialization of the Ruby VM was occuring at a lower stack
frame than where we were loading code into the VM.  This caused a gap on
the stack where the Ruby GC would not search for VALUEs to mark,
resulting in random crashes when Ruby would GC objects still in use.

The fix is to properly initialize Ruby from main, thereby ensuring that
it gets initially configured with the highest possible stack location.
This will ensure the GC searches the entire stack for VALUEs to mark.
Merge pull request #80 from peterhuene/cfact/71

(CFACT-71) Fix Ruby VM initialization.
(CFACT-63) Add structured processors fact

This commit adds a new 'processors' structured fact, which returns a map
including keys for processor count, physical processor count, and
processor models.

Also, the existing processor facts were updated to take their values from
this new structured fact, rather than resolving them individually.
(CFACT-65) Replace RE2 with boost::regex

Removes dependency on RE2. Uses an adapter class and function to abstract
regular expression calls so it's easier to modify or switch packages if
necessary (for speed or Unicode support), and simplify the call interface.
Merge pull request #76 from whopper/structured_processors_fact

(CFACT-63) Add structured processors fact
Merge pull request #77 from MikaelSmith/task/master/CFACT-65-replace-RE2

(CFACT-65) Replace RE2 with boost::regex
(CFACT-77) Remove slamd64 operating system detection
Merge pull request #82 from adrienthebo/issue/master/cfact-77-remove-slamd64

(CFACT-77) Remove slamd64 operating system detection
(CFACT-78) Remove bluewhite64 operating system detection
(CFACT-44) CFacter gem should always return a Fact object.

Unlike Facter, CFacter doesn't make a distinction between facts that
loaded but didn't resolve (value is nil) and facts that didn't load.

Facter#[] returns nil for facts that didn't load and a Fact object for
facts that loaded but may not have resolved (value is nil).

Therefore, CFacter#[] needs to always return a fact object to keep this
expected behavior.
(CFACT-44) cfacter should only load custom fact files once.

If the same search path is specified multiple times, cfacter
will attempt to load the fact the same number of times.

To maintain the same behavior as Facter with respect to
configuring search paths, load a file only once but do so in discovery
order.
(CFACT-44) Enable a warning log level when using the gem.

Currently the gem disables all of cfacter's logging.
To get useful diagnostics when using cfacter in puppet,
configure logging at the warning level.
(CFACT-44) Custom facts should restore previous Facter module.

Currently the custom fact processing removes the existing Facter
module if present.

Instead, it should save the current module and restore it when
processing custom facts has completed.