Added the keyboard interrupt functionality

Sorry I really should have broken this down into seperate commits. The
first thing that I fixed was that during the ISR the address of the ISR
was being put into the x register which caused all the calls in KEYIO to
PORTB to not work. I'm not sure why he wanted to use indexed addressing
mode for the ports but it seems to me that direct addressing mode is the
way to go. The second thing I did was implement a buffer so that the user
can input multiple key presses that then hit the flush key when they want
to send the command. We have to make sure that there is no key press
between key presses as to avoid registering the same key press as
multiples.