process: added central handling for memory pressure
x86,x64: call memory pressure handling when we run low on free physical pages
core: fix a few math bugs in SLAM recovery.
utilities: integrate Cache with MemoryPressureManager
core: register SLAM recovery with MemoryPressureManager
utilities: rework RadixTree so it uses a list of children nodes, rather than storing 256 pointers per node (which is horribly space-inefficient).
core: rearrange core initialisation somewhat, fix display bug in startup banner that's been around for years
process: added priorities to MemoryPressureManager, integrated with existing handlers
core: fix x86 PhysicalMemoryManager to avoid recursive attempts to alleviate memory pressure, fix page allocation tracking counters
x64: don't use the userspace stack size for kernel stacks (as 1 MB kernel stacks are quite wasteful)
core: fix an oops in SLAM recovery that rarely caused a kernel page fault
log: make the static log buffer small by default and offer a define if it really needs to be larger (memory footprint of kernel reduced substantially!)
posix, splash: handle ServiceFeatures being NULL, which it can be if the target service does not exist
modules: allow module init to return false, which triggers an unload of the module.

* The concept of 'optional' dependencies now exists; this allows a module to continue to be loaded even if a dependency fails to load.
* This helps free up memory used by modules on systems which don't have hardware that the various modules support.
vfs: memory mapped file memory pressure handler

This can't do a huge amount yet as there is no swap subsystem to pass dirty private/anonymous mmap pages to. It essentially clears the pages and attempts to make them as reclaimable as possible for Cache's memory pressure handling.