Ignore children with clashing keys

Fixes #566.
Link to Events from Forms

closes #1372
Warn better for key issues

We weren't warning for key issues at the top level (renderComponent)
level at all. This makes us do that, even if it's not quite perfect.

closes #1351
Make rendering to null work and make it injectable

This allows render to return `null`. Under the hood, this renders a `script` tag.

closes #1127
Normalize view and detail properties
Don't fail if target.ownerDocument is null

See f71dbab.
Let early returns do their thing
Merge pull request #813 from spicyj/e-view-detail

Normalize view and detail properties
Document multiple ways to insert comments in JSX
Update 05-reusable-components.md

`any` also seems to accept primitive values, not only objects. And since we already have `React.PropType.object`, the description was confusing.
Merge pull request #1379 from fkling/patch-1

Update 05-reusable-components.md
Merge pull request #1364 from spicyj/key-collisions-2

Ignore children with clashing keys
Share reconcile transaction in batched updates

Should make #1350 better and will also take away any performance hit from #1157.

Test Plan:
grunt test
Batch subupdates caused by any state update

With this, multiple setState calls triggered by a componentDidUpdate handler (or similar) will be batched together, regardless of if the original setState call was in a batching context.

I also cleaned up some inconsistencies with the order of component updates and callbacks in situations where one component's update directly causes another to update.

Fixes #1147. Helps with #1353 and #1245 as well, though doesn't completely fix them yet.

Test Plan:
grunt test