`.read_pointer` on `MemoryPointer`, returns a `Pointer`

By default a `Pointer` does not own / release the memory it's pointing to.  Unfortunately though without the helpers, on `Pointer`, we can't call `read_wide_string`, etc.