runtime: offptr_t: Fix NULL, and add a global implementation
NULL can't be treated as a relative pointer, because it's always
absolute. Good thing we weren't using offptr_t in relocatable memory
yet. Now this is treated as the special case it must be.
I've also added another offptr_t implementation, based on a fixing
offsets from the global shared-memory base. This means it's only good
for pointers within that memory, but math should be simpler.