fixed wierd keyboard stuff by factoring out keypress events

Added a new type of custom signal combiner, in order to handle splitting the events into three separate signals.

lastPressed is simple dropRepeats of keydown

keysDown is the result of combining keydown, keyup, and blur

keySignal is updated, as keysDown is already also dropping repeats