x86: if we run out of pages in our page stack, try and compact caches to reduce memory pressure.

This is currently not working amazingly as under some circumstances we
deadlock on the heap's spinlock. This happens when the cause of the
original failed page allocation is during heap expansion. Still debugging.