x64: double fault handling for x86_64 using the IST
debugger: fixed Debugger entry and panic() to not page fault with NOGFX defined.
x64: rework stack allocation so stacks are demand paged in userspace.
modules: make sure .dtors ends up in output modules, as it is needed for correct unloading behaviour
x64: turn on write-protect bit at startup, fix kernel module loading and event trampolines accordingly.
posix: in waitpid, if a process is not a POSIX process, don't wait for it.

It turns out waitpid would sometimes get stuck waiting for the kernel process to terminate, which is not something that happens very often. This is now resolved.
slam: added extra debug logging to show the size of the heap bitmap.
tcp: fix listen() and connect() port usage.

Listen() now has its own port namespace and cannot listen on an already-used ephemeral port.
Connect() now uses ephemeral ports, which begin at port 32768.
utilities: fix a logic error in String::operator += that caused truncation when appending to a string that was very close to exceeding the static buffer capacity.
x64: pin physical page for shared mappings on clone so we don't reach a possible double-free.

This fixes a lot of weird startup crashes caused by a double-free of the anonymous memory map global zero page.
ttyterm: drop input callbacks on the floor if the system is in a graphical mode, so CTRL-C in the TUI doesn't terminate the entire window manager.
TUI: fiddling with TUI text cell size, and fixing integer truncation issues causing text rendering to look nasty