(CFACT-50) Fix compilation with Visual Studio.

A number of changes required to build with Visual Studio on Windows.

OpenSSL has different names for the libraries (crypto maps to libeay).
YAML-CPP can have a different name format.
Default move constructors and assignment operators from C++11 aren't implemented in Visual Studio 2013 (or 14 CTP): http://msdn.microsoft.com/en-us/library/hh567368.aspx#defaultedanddeleted
strncasecmp is a POSIX function; Windows has a different name for it. There's a Boost equivalent using ilexicographical_compare that I used instead, with Boost's Range concepts to avoid copying the string while iterating over a substring.
link_directories is required on Windows so DLLs can be found from the specified .libs

`unique_ptr<RE2>` can be treated as a `RE2*` declaration, so `RE2` can be incomplete.  However, I think the standard only guarantees that much.  Invoking any member of `unique_ptr`, such as a move constructor or move assignment operator may require the full definition of T.