Added keypress support. Did NOT add keyup/keydown, because that's way more complex.
Switched the state transitions to use a statemap, and not a gigantic pile of for loops. Much cleaner code, much faster code.
The Add method now requires a document element. This keeps us from traversing the entire DOM for each state transition.