(PUP-2738) - Refactor FFI memory consumption / usage

~~- 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~~
Ah, I was confused about this method. I have the same comment here about `&block`. It's not clear from the method signature that a block must be passed.