(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.
Good point, didn't notice that. I'll revert the comment. I'm not sure of a good way to implement this on Windows then, or why it's necessary. On Windows the DLL is loaded once and reference counted, so there's no harm in looking for DLL by name again.