(CFACT-67) Fix inter-resolver dependencies when resolving all facts.

In an attempt to optimize clearing the collection's data structures
while resolving all facts, we were clearing out the resolver map before
resolving each resolver.  This prevented a resolver from requesting a
fact from another unresolved resolver because the resolver map was
empty.

The correct way to resolve all facts is to simply take a resolver off
the front of the resolver list, remove it from all data structures
without clearing them, and then resolve.  Repeat until the resolver list
is empty.
Merge pull request #78 from peterhuene/cfact/67

(CFACT-67) Fix inter-resolver dependencies when resolving all facts.
(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-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.