Merge pull request #176 from andreypopp/master

Add datetime to the list of known DOM attributes
Remove the check for console.warn

We already polyfill this at FB and we should recommend https://github.com/paulmillr/console-polyfill for open source.
Allow nested ReactUpdates
Tweaks to make the Closure parser happy

This doesn't make it actually run with Closure, but passes its parser.
Try harder to find container in ReactMount.findReactContainerForID.

When we render a new component into a container, we now record a reference to the rendered DOM node as `rootElementsByReactRootID[reactRootID]`, so that we can determine the actual container later on, in case `containersByReactRootID[reactRootID]` is no longer the true container.
Make ReactMount.findComponentRoot breadth-first & non-recursive.

This function needs to be as fast as possible for those cases when
`ReactID.getNode` can't rely on the `nodeCache`.

Breadth-first search prevents us from diving too deeply down the wrong
branches when the sought-after node can be found at a shallower level.

The queue required for breadth-first search is implemented by a single
array indexed by `childIndex`. To save space, only the `.firstChild` nodes
are stored, and we use `.nextSibling` to iterate over the other siblings
in a `while` loop.
Continue over ID-less children in ReactMount.findComponentRoot.

This fixes our perf test by coping with edge cases like the
injection of `<tbody>` between `<table>` and `<tr>` nodes, which occurs
automatically in some browsers when we set `.innerHTML`.

Introducing more search branches would be risky if not for my previous
commit that made `findComponentRoot` breadth-first instead of depth-first.
Add support for missing html elements

We're missing a bunch of elements. So I scraped them from https://developer.mozilla.org/en-US/docs/Web/HTML/Element. Here's the script I used (run from Firefox scratchpad):

```
Array.prototype.slice.call(document.querySelectorAll('div.index.widgeted li'))
  .filter(function(li) {
    return !/deprecatedElement|obsoleteElement|nonStdElement/.test(li.firstChild.className)
  })
  .map(function(li) {
    // <tag> -> tag
    return li.querySelector('code').textContent.replace(/<(.+)>/,'$1');
  })
  .join(': false,\n  ');
```

I had to filter a couple more out (because there's some malformed content), but then it was simply merge with what we had and check to see if the new ones needed to omit the close tag.
Sync JSX tags from upstream

This is the other part of fc5f7e0e85e164f6826cf1ddc3f055f6ee4f93cb. This
file isn't part of our sync process so needs to be done separately.
Add some missing attributes

Mostly this was to better support some HTML5 stuff. This was not a complete pass through though, and we should probably add more.
Add __benchmarks__ to .gitignore
Merge pull request #178 from paulshen/master

Add __benchmarks__ to .gitignore
Upgrade browserify.

There are other changes I'm sure but the most important is that module
sorting results in deterministic builds.

The biggest win here comes for releases. Previously we had to jump
through hoops to make sure the files we put in bower were the same files
we put on the CDN, were the same files packaged in the Ruby gem, were
the same files we packaged into a zip file, were the same file we used
when create PRs to CDNJS. Rebuilding docs also resulted in conflicting
versions so we had to be careful when committing. This takes away all of
that pain. We can build from the same revision and get the same files.
Upgrade other dependencies

Nothing groundbreaking. `semver` was likely already installed at 2.0.x
anyway (since >=) and `grunt-contrib-jshint` just gives us `jshint`
@ 2.1.3
Fix Clowny Validation Code

ಠ_ಠ
Don't ignore children of non-ancestor ID nodes in findComponentRoot.
More autobind warnings and invariants

This adds two new warnings and one new invariant:

- Warn when using React.autoBind() that it is deprecated.
- Throw when calling bind() on an autobound method with the wrong value of "this". Today we'll silently ignore the provided value, which is confusing.
- Warn when calling bind() on an autobound method with the *right* value of "this" and no other arguments. This is already done for you by React.
Short-circuit `updatePropertyByID`

When `ReactNativeComponent` updates, it calls `updatePropertyByID` in `ReactDOMIDOperations` which calls `DOMPropertyOperations`. However, in `ReactDOMIDOperations`, we will lookup the node for an ID using `ReactID.getNode`. This wastes time looking for nodes when we may not need to ever update it (e.g. `children`).

This changes `ReactNativeComponent` to bail out sooner.
Reduce Lookup for Missing Lifecycle Methods

This is a micro-optimization that reduces the lookup time for missing lifecycle methods. The extra amount of memory is linear to the number of components that exist on a page which I think is a worthwile trade-off.
Delete `setTextNodeValueAtIndexByParentID`

This does not appear to be used anywhere.