utilities: allow LockGuard to take an optional Boolean value in its constructor that can disable the operation of the lock.

This helps avoid deadlocks in cases where LockGuard is useful, but the lock may already be held based on some other state.
utilities: add a way to halt and resume a RequestQueue, and a way to check if a request is pending for a RequestQueue.
posix: allocate space for argv/env dynamically, rather than at a fixed address
posix: fix path normalisation for /var/run so it properly points to a mount
process: rework cleaning up pending requests on thread termination, and move a few methods of Thread into Thread.cc instead of Thread.h
processor/x64: force-enable IRQs after running a syscall handler.
ramfs: fix readBlock logic
utilities: check if a Cache is registered when executing a request in CacheManager
linker: fix module loading so flags are applied on page boundaries, which fixes exceedingly rare issues when modules had .text sections that crossed page boundaries close to data.
process: fix logic errors that triggered constant allocation of userspace stacks

The system now no longer allocates a leaked userspace stack for every keypress.
x64: map in a potentially-CoW stack before changing to it in Processor::jumpUser