(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

Rather than ifdefing specifically for VC++, I think we should just add the non-default move constructor / assignment operator for all platforms.  It'll make the code cleaner and if we have to remember to add new members to the move constructor / assignment operator, we might as well do so for all platforms rather than introducing bugs specific to windows.  Also, since these symbols are generally being imported from libfacter, I've favored definitions in the .cc over inline definitions in the .hpp to ensure that somebody linking in libfacter doesn't inline their own copy  (not that it matters, really, but for consistency's sake).