Add -march=i386 compile flag.

Without this, Clang would sometimes generate SSE instructions which crashed the
kernel with an Invalid Opcode exception. Specifically, this happened when
returning an 8-byte struct by-value.
Add -nostdinc and -ffreestanding. The latter is recommended but I'm honestly unsure exactly what it does.
Store key events in a ring buffer as they arrive.