(CFACT-121) Implement dynamic loading of the ruby dll on Windows

Adds defines for Windows _access and _waccess calls, to make them similar to Linux.
Adds a scoped_error class for Windows system error messages.
Adds execution::which, implemented identically to Facter's method.
Simplifies POSIX api::find_library with use of tie for comparison and assignment.
Implements Windows api::find_library, dynamic_library::load, and dynamic_library::find_symbol to facilitate loading the Ruby dll.
(CFACT-121) Restore search on 'ruby'

Changed search to ruby.exe during development, but that was due to incomplete behavior on execution::which.
Restored the search to look for 'ruby' instead of 'ruby.exe'.
(CFACT-121) Fix check for executable file

Corrected a typo: the environment variable is PATHEXT (not EXTPATH).
Digging through the Ruby source code shows that File.executable? eventually
just checks that the file is a directory, or a file with the extension
bat, .cmd, .com, .exe. So we re-use extpath_helper to implement the original
intent of the Facter execution::which method.
(CFACT-121) Implement find_by_pattern and minor fixes

Implemented find_by_pattern, which searches loaded DLLs for one that matches the
specified pattern and returns a handle to it in the form of a dynamic_library.
Fixed const and & correctness of helper functions.
Changed Ruby library version comparisons to use int instead of string.
Implement get_external_fact_directories and can_resolve on Windows
Merge branch 'task/master/CFACT-121-implement-ruby-facts-on-Windows' into task/master/CFACT-91-implement-external-facts-on-Windows

Conflicts:
	lib/src/execution/windows/execution.cc
Fix finding file with explicit extension in which
Read output and return it, write to log
Add TODO