(PUP-2578) Unbreak services from packages which set local flags.

So don't add _flags="" for pkg_scripts if no :flags were set, as it
may override the default flags from inside the script.
(PUP-2578) Keep order for pkg_scripts.

Do not unconditionally alphabetically sort the list of pkg_scripts
as order matters. Explicit ordering will need to be forced through
resources dependencies.
(PUP-2578) Tweak #in_base? by not relying on pkg_info, but on /etc/rc.conf which is faster
(PUP-2578) Adjust spec tests to recent changes:

- Ensure strict ordering of the result of #pkg_scripts_append
- Add test for #in_base?
- Ensure package scripts don't end up with empty flags
(maint) Remove resources_spec.rb Facter stubs

 - Facter stubs would actually cause different types to be created
   on Windows that would break tests.
 - Instead of creating stubs that affect a number of tests, carefully
   select the uid in the one test that needs to be particular about max
   UID
Merge pull request #2557 from jasperla/service

(PUP-2578) Adjustments for new OpenBSD service provider
(PUP-2738) Ensure block in user.password_is?

This ensures that a block is given by password_is? when calling
logon_user even though it doesn't need to do anything with it. We went this
route because it made more sense to require a block for this call versus
checking if a block was given in the logon_user method. If you call
logon_user without passing a block you cannot take the next step to later do
something as that user. So it would be a misleading if we allowed it without
requiring a block.
Merge pull request #2782 from ferventcoder/ticket/master/PUP-2738-fixes

(PUP-2738) Ensure block in user.password_is?
Merge pull request #2785 from Iristyle/maint/master/PUP-2454-uid-fix-Windows

(maint) Remove resources_spec.rb Facter stubs
(PUP-839) Add read_word alias to FFI::Pointer
(PUP-839) Add missing &block params to Security
(PUP-839) Remove windows/handle from Security

 - Use shared Use FFI::WIN32.CloseHandle method
 - Make explicit that open_file returns nil, where it was previously
   returning the exit code from CloseHandle
(PUP-839) FFI with_process_token to Process class

 - Refactor with_process_token, moving it into Process class and
   using FFI in the process.  Additionally return nil since there is
   nothing else to return
(PUP-839) FFI Puppet::Util::Windows::Security vol

 - Remove windows-pr volume class mixin, and implement
   GetVolumeInformaitonW with FFI.  Use closure to capture supported
   value inside of a MemoryPointer release block. Fix minor bug where
   the bitwise check was not comparing against test value, but 0.
 - Requires wide_string from Puppet::Util::Windows::String and
   a constant from Windows::File
(PUP-839) FFI Util::Windows::Security / ::File

 - Remove windows-pr file class mixin for Windows::File and implement
   CreateFileW in Security.
 - Note that open_file overlaps with create_file in file.rb
 - Add FFI GetFileAttributes and SetFileAttributes to File module
 - Move all file attribute related calls out of the Security module and
   into the File module, including get_attributes, add_attributes,
   remove_attributes and set_attributes.  Add corresponding deprecation
   notices.
 - Add a top level FILE alias for Puppet::Util::Windows::File and
   use that to make calls to the APIs / constants in File.
 - File must be included prior to Security to use these constants.
(PUP-839) FFI Windows::Util::Security.set_privilege

 - Don't call LookupPrivilegeValue directly anymore, instead call
   Puppet::Util::Windows::Process.lookup_privilege_value which has
   already been FFI'd.  Use FFI structs for LUID_AND_ATTRIBUTES and
   TOKEN_PRIVILEGES
 - Ensure that set_privilege has a well-defined return value of true
   when it succeeds, or raises otherwise.
 - Remove TOKEN_QUERY privilege since AdjustTokenPrivileges is not
   filling in a buffer with existing LUID information.
(PUP-839) FFI AddAccessAllowedAceEx

 - FFI calls made to AddAccessAllowedAceEx and AddAccessDeniedAceEx and
   properly verify their return codes against FFI::WIN32_FALSE.
   Further, return nil explicitly when not raising.
 - Update call site in set_security_descriptor accordingly, using and
   freeing a FFI::MemoryPointer for the ACL.
(PUP-839) FFI Util::Windows::Security.IsValidAcl

 - Replace existing calls to IsValidAcl with FFI'd versions, and
   properly handle exit codes
(PUP-839) FFI Util::Windows::Security.InitializeAcl
(PUP-839) Remove windows/memory reference

 - Puppet::Util::Windows::Security was only referring to the LocalFree
   Win32 function, so use FFI::Pointer helper read_win32_local_pointer
   to automatically perform memory management on the data returned by
   the GetSecurityInfo API.