(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~~
A return within a block will cause a non-local return, so it will actually return from the enclosing `WriteChar` method. This will work, because the `MemoryPointer` calls are the last thing in the `WriteChar` method, but I honestly find that behavior dangerous. What if you wanted to add additional logic on line 142, before the end of the `WriteChar` method? It would magically never be called.