(CFACT 119) Add zone facts for solaris

This patch adds zone facts for solaris. Since zones do not provide a C API, we
use zone commands to fetch this information.
Merge pull request #136 from vrthra/fix/cfact-119/solaris-zones

(CFACT 119) Add zone facts for solaris
(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.
Add --trace option for low-level logging that's rarely useful for debugging and clutters the output.
(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.
Check that a sub_match is valid before using lexical_cast in regex.hpp, so optional
matches don't throw an exception.
Merge pull request #137 from MikaelSmith/task/master/CFACT-121-implement-ruby-facts-on-Windows

(CFACT-121) Implement dynamic loading of the ruby dll on Windows
(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) 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-91) Add Windows external fact

Add external fact support and execution infrastructure.
New to Windows are batch files and Powershell scripts.
Implement get_external_fact_directories and can_resolve on Windows.
Add scoped_env class for modifying and restoring the environment, useful on Windows because it's easier than directly modifying the child environment in some cases.
Split module::execute_command into Windows and Linux variants to handle shell execution.
Fix failing unit tests on Windows, enable unit tests in AppVeyor.
Add ruby in AppVeyor for unit tests.
Add execution unit tests.
Fix util::each_line for Windows line endings.
(CFACT-91) Enable logging and environment testing on Windows

Add unit testing related to execution and update environment::get, which didn't work on Windows for variables modified in the same process.