Throw when unmounting <html>, <head>, <title> or <body>

These are dangerous from a cross-browser perspective. I think supporting efficient reactive updates will be prohibitively
expensive and we'll never prioritize it. Instead of killing this capability entirely, let's just throw on the dangerous cases.
There will be a few follow-up diffs
Forbid full-page rendering without server rendering

Final part of server rendering cleanup. We should only support full-page rendering when server rendering is involved since
otherwise it's slow and can crash browsers when you start adding and removing document roots. This diff removes the magic
innerHTML code (since that will be handled by the server rendering piece) and adds the right assertions and errors.

Because there's no longer a dangerous of accidentally nuking the whole page, I removed allowFullPageRender which is yet another
internal we no longer need to expose.
Change global to window in SyntheticClipboardEvent

Replace `global` reference with `window` in `SyntheticClipboardEvent`.
Cleanup ReactEventEmitter Variable Naming

Minor follow-up to 80d7d2d0f8ec0f4f1f3c2dbe613f36bda572ce11.
Silence console.error in ReactDOMInput-test

This test is expected to throw but because of ReactErrorUtils.guard
which uses console.error in __DEV__ it also logged the invariant error
to the console. This change fixes it by temporarily stubbing out
console.error.

Fixes #531
Separate Module for Key Normalization

This moves key normalization into its own module so that it can be re-used elsewhere.