(PUP-2738) FFI::Pointer#read_win32_local_pointer

 - Create new block style helper that automatically calls LocalFree on
   a returned pointer after it's done being used
 - Move FFI definition for LocalFree into FFI::WIN32 and out of
   Puppet::Util::Windows::Error and Puppet::Util::Windows::SID
(PUP-2738) FFI from_string_to_wide_string block

 - MemoryPointer from_string_to_wide_string previously allocated a
   new MemoryPointer instance but didn't force callers to scope / free
   it.  This allowed the Ruby runtime to clean it up on GC, but we
   prefer to force callers to use a block form, to clean up the
   unmanaged memory when the variable is no longer needed.  Refactor
   the method to yield the ptr.
(PUP-2738) - WIP - DO NOT MERGE

 - Causes 14 test fails with Invalid Memory Object, so might
   be on to something here
 - one of the MemoryPointer auto-free / block style calls has been
   removed from windows/file.rb ... resulting in 28 less failures
   need to investigate further

current fails on
bundle exec rspec ./spec/integration/provider/package_spec.rb ./spec/integration/type/exec_spec.rb ./spec/integration/util_spec.rb ./spec/unit/parser/functions/generate_spec.rb ./spec/unit/provider/service/base_spec.rb ./spec/unit/util/execution_stub_spec.rb