keyboard: implemented frame error detection and reserved 4 status bits for the scancode decoding routine (which has yet to be implemented)

Isn't it nice how we can fit all the data needed by the keyboard driver
into two bytes? This means we can just stuff it all into the small unused
space behind the interrupt vector. This has the advantage that no other
memory needs to be reserved for the keyboard driver. The only restriction
is that the interrupt vector table has to be in RAM, which is a good idea
anyways. Another restriction is that the keyboard driver cannot run in ADL
mode. This doesn't matter. There may be some uses for ADL mode but the
keyboard driver is certainly not one of them.