- Removes blockUpper2GB hack; we now start early in the process
and reserve all (available) space in the lower 2GB address
space, leaving the upper 2GB untouched for host code
- All virtual memory operations flow through wibo::heap for
bookkeeping
- All guest code uses a guest mimalloc area + thread-local heaps
reserved in the guest address space
`mi_heap_check_owned` does not work for allocations that span
multiple blocks; `mi_is_in_heap_region` is a less precise but
working way for us to check if a pointer is in our heap.
See https://github.com/microsoft/mimalloc/issues/298