FYI: Single out IE8 as a separate execution environment

https://github.com/facebook/react/pull/1901/files?w=1 (without whitespace changes)

@zpao I did a quick test just to see what would happen if we singled out IE8 and made it possible to strip it from the final build. I'm pretty confident that no other old browser got caught in the cross-fire, but would obviously have to validate (not that I recommend taking this PR as-is), and I think there are a few other call sites that are IE8 specific. I was also unsure about `getMarkupWrap`, couldn't quite decode what was IE8 specific and not.

Current master size:
```
649770 133520 build/react-with-addons.js
135443  36996 build/react-with-addons.min.js
591846 121396 build/react.js
125593  34400 build/react.min.js
```

IE8 compatible build (can be made smaller):

```
  +569    +55 build/react-with-addons.js
  +452    +77 build/react-with-addons.min.js
  +569    +59 build/react.js
  +452    +79 build/react.min.js
```

IE9+ compatible build (isIE8 is constant false):

```
  -273    -36 build/react-with-addons.js
 -1338   -407 build/react-with-addons.min.js
  -273    -38 build/react.js
 -1338   -405 build/react.min.js
```

So it stripped away slightly more than 1% (from master), mostly courtesy of 3 large functions being stripped out of ChangeEventPlugin + innerHTML I assume. Regardless of if we care about separate builds, the method of using `isIE8` in this PR might still be worth switching to (`cssShorthandExpansion` is no longer applied to all browsers, etc).

PS. It also seems like `ViewportMetrics` should be able to be put under `isIE8`.