Polyfill and normalize HTML5 "key", deprecates which and keyCode

Implements the HTML5 ```key``` property for all browsers and normalizes behavior of those that already do, only special keys are supported. Non-special keys **cannot** be supported because they depend on the user's keyboard layout which cannot be determined, among other things. IE and FF both support the ```key``` property, but they are broken for anything but special keys.

Deprecates my PR https://github.com/facebook/react/pull/502, while you can listen to other values for which and keyCode, doing so relies on the user having a specific keyboard layout, which is quite simply broken behavior (and quite dangerous as it is not immediately apparent).

So all-in-all, this is as good and reliable as is humanly possible today, in **any browser**.

```
   raw     gz Sizes
341286  68450 build/JSXTransformer.js
135467  27432 build/jasmine.js
1033330182163 build/react-test.js
495551 103677 build/react-with-addons.js
104155  29310 build/react-with-addons.min.js
461894  96506 build/react.js
 97439  27443 build/react.min.js

   raw     gz Compared to master @ 564c8669f8ef511b9fc59e7006af5c8db30e4585
     =      = build/JSXTransformer.js
     =      = build/jasmine.js
     =      = build/react-test.js
 +1761   +744 build/react-with-addons.js
 +1017   +566 build/react-with-addons.min.js
 +1761   +739 build/react.js
 +1018   +559 build/react.min.js
```