vfs: only do writeback in MemoryMappedFile::unmap/remove if the page was mapped writable. Big performance boost from this.
utilities: rewrite UnlikelyLock.
process: set TLS base in PerProcessorScheduler::killCurrentThread().

This fixes a terrifyingly rare condition where a thread would terminate, and then in the next timeslice the next thread would access its TLS region (which no longer exists) and segfault. A single reschedule would have restored the TLS base.
process: restore interrupt state on return from PerProcessor::checkEventState, don't disable interrupts until after calling Thread::shutdown()
core: idle thread shouldn't yield, this makes no sense.
process: Scheduler now exposes the kernel Process object
utilities: remove special-cased async request from RequestQueue, it now creates a thread to do a synchronous request.

This also adds code to force RequestQueue worker threads and async trampolines to run in the kernel process, which makes them less prone to dying because a process terminated.
process: completely rework thread-termination in the Process termination path
process: add DebugState for 'thread is joining another' to Thread, fix up RequestQueue cleanup now that async requests don't actually exist, fix issues with join/detach
debugger: update ThreadsCommand to reflect new DebugState, update DumpCommand to state if in user mode.
TUI: gut UserConsole after RequestQueue changes