core: move to a bootstrapped bitmap (using pages from the heap memory range) instead of using a MemoryAllocator in SlamAllocator.

This resolves the chicken-and-egg problem of MemoryAllocator using
operator new/delete quite a bit.
lib: SlamAllocator recovery. Currently stops the world on the CPU it is invoked on.
x86: attempt SlamAllocator recovery if we run out of memory.