added support for custom allocators; abstracted `memcpy_from` behavior and added the useful offset copy; still need to write a test