[React Children] Step One: Refactor flattenChildren

Refactoring `flattenChildren` so that the traversal code is reusable
for other purposes.
[React Children] Step Two:  Use `traverseChildren` to perform `mapChildren`

Use the new `traverseChildren` utility to perform `mapChildren`.
The goal is to get as close to the bavior of the semantics of
`Array.prototype.map`, but also in a way that understands deeply nested arrays
and objects.
[React Children] Step Three: New test case for `traverseChildren`.

If we're going to build utilities off of this, we should have good test
coverage.
Controlled <select> and <option> Components

This implements a `<select>` component that supports `value` and `defaultValue`. It also changes `<option>` to warn when the `selected` prop is supplied.
Fix Markup Rendering in IE

This fixes known browser bugs with rendering markup using `innerHTML` in IE ([[http://support.microsoft.com/kb/276228 | here is an example of one]]).

This is a subset of what `HTML` (and jQuery) does, and we should eventually consider pulling it out into a separate module to reduce code duplication. For now, this is the minimal set of changes needed to unbreak React in production.

We can afford to use a subset of what `HTML` does because we have the luxury of knowing that the markup is generated sanely with proper closing tags, etc.
add missing argument to invariant in ReactDOMSelect
Fix rootElementsByReactRootID bookkeeping in ReactMount.js.

It's not always possible to update `rootElementsByReactRootID` when the
contents of the container are re-rendered; for instance, when we call
`dangerouslyReplaceNodeWithMarkup` or `dangerouslySetInnerHTML`. Since
this bookkeeping is just trying to warn about potentially problematic
manipulations of the root element, and we can be relatively sure that a
new element with the same ID is logically the same element, this diff
avoids warning in such cases.