(MODULES-1174) Puppet 3.7 compatibility

 - Puppet 3.7 refactored underlying Win32 API code by changing gems and
   refactoring classes.  The windows-pr gem was removed which provides
   a number of methods and constants through mixins to the
   Puppet::Util::Windows::Security class.  A number of global constants
   are also defined in the namespaces ::Windows::File and
   ::Windows::Security.
 - Furthermore, some methods that used to be defined on
   Puppet::Util::Windows::Security are now in Puppet::Util::Windows::SID
 - Restructure the code to prefer Puppet 3.7 locations with a graceful
   fallback solution to 3.6.x with old gems, etc.
 - Define all constants locally in base class
 - Add definitions for FILE_WRITE_DATA, FILE_APPEND_DATA, FILE_READ_DATA
   FILE_WRITE_ATTRIBUTES and FILE_EXECUTE to Base class for use in tests
 - Ignore LoadError given by 'windows/file' and 'windows/security' when
   they are not present in Puppet 3.7+