Normalize and polyfill KeyboardEvent further, also MouseEvent+TouchEvent

KeyboardEvent now normalizes "charCode", "keyCode", "which" across all browsers
KeyboardEvent has partial "key"-support for KeyDown/KeyUp and full "key"-support for KeyPress.
KeyboardEvent, MouseEvent and TouchEvent now has "getModifierState", polyfill when not implemented.
Merge pull request #776 from syranide/superkey

Even better normalization of KeyboardEvent + MouseEvent