Keyboard polyfill

Based on [this] (https://groups.google.com/forum/#!topic/scala-js/5sWDOyu-OJM)  conversation I'd like to discuss how to include this PR into scala-js-dom... It starts to be a little messy in there and we should think about a system that would allow for adding new extensions, polyfills and other cool things more easily... Meaning that it would be clear how and where to add it.

For instance here the `object KeyboardPolyfill` is a polyfill thingy, the `KCode` is a keyboard thingy and `ChCode` rather Character thingy :-) Anyway all this stuff is quite essential if you want to do something really keyboard interactive...

The polyfill's `normalize` method will probably `grow` as people will notice differences on different devices/browsers, which is mainly mobile devices and ios.