Unacknowledged interrupt workaround

In the last commit, to test the new Stack Not Present code I marked SS0
as Not Present in each User LDT, and it still worked (as long as it
wasn't on VirtualBox) - usually.
Sometimes, during task setup, the system would lock up with no more
scheduling happening. This turned out to be because of lost
(unacknowledged) interrupts.

From Exec/Ints/Fault.inc:
1) A hardware interrupt occurs, and the CPU goes to service the
interrupt;
2) It's currently running at CPL3, so needs to switch to CPL0 and its
stack;
3) The new stack is marked as Not Present, so a Stack Fault is raised;
4) The Stack is made present, and the faulting instruction is resumed;
The problem is: the faulting instruction is the interrupted instruction,
not the interrupt itself. In other words, the interrupt is lost!

I had previously "fixed" this in the generic Fault handler, to allow me
to use the Keyboard inside the debugger. I extracted this code as a
function and called it from the Segment Not Present handler too.