(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. Since the ptr is no longer valid after the block yields, return nil from the method
- Move FFI definition for LocalFree into FFI::WIN32 and out of Puppet::Util::Windows::Error and Puppet::Util::Windows::SID
- Ensure that proper wide string is resolved / passed out of Puppet::Util::Windows::Error.format_error_code and Puppet::Util::Windows::SID.sid_ptr_to_string when resolving string inside of a block
- Refactor Puppet::Util::Windows::SID.valid_sid? to read ptr inside block, use closure to store the 'valid' return value