(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.
The ruby code for File.executable? (used in Facter) is all custom POSIX equivalents; in the end it returns true for directorios, and files with the extension {com, bat, cmd, exe}. So checking PATHEXT in facter didn't really work. We'll just check executable based on the extension.