Exposing ReactProps as React.Props

Right now, even though ReactProps is committed, there is no way to use it as it is not exposed.
Adding JSX pitfalls section in the docs
Add HTML5 Drag/Drop events to React
Add `ReactComponent#isMounted`

There is currently no way for components to know whether or not they are mounted. This means there's no way for callbacks to figure out if they can make certain assumptions (e.g. can `getDOMNode()` or `setState()` be safely invoked).

This adds an `isMounted` protected method that lets components properly handle callback behavior when unmounted.
Create `EventPluginRegistry`

The `EventPluginHub` module was getting huge and scary. This pulls out all of the logic required to inject plugins and publish their event registration names into a new `EventPluginRegistry` module.

Functionally, nothing should have changed. I added many error checks to cover edge cases that we were not yet running into, but they are all in `EventPluginRegistry` and unit tested.
Cleanup `style` Prop Reconciliation

This cleans up the reconcilation path when adding a `style` prop (going from a falsey or no `style` to having one) by reducing the need for an object allocation and for-loop.
Remove Unnecessary DOM Mutations

This fixes an edge case that can cause unnecessary mutations in the DOM. Namely, if a prop is falsey, it will get touched on every update by reconciliation. See unit test.
Pass multiple children in JSX as additional arguments

This is an alternative to D809298. In normal usage you'd end up with a single
flat array in props.children.
Remove `isStatic`

This can be replicated with a custom component that always returns false`
from `shouldComponentUpdate`. A generic implementation might look like:

```
var StaticContainer = React.createClass({
  shouldComponentUpdate: function() {
    return false;
  },

  render: function() {
    return this.transferPropsTo(this.props.children[0]);
  }
});
```

And then used in JSX as
`<StaticContainer><div>Hello!</div></StaticContainer>`, resulting in
only `<div>Hello!</div>` being inserted into the DOM.
Merge pull 75 upstream

Needed to make some small changes since we weren't synced when it was
merged.
Fix tht typos
Unnecessary `this._rootNodeID` Invariant

Summary: This invariant is unnecessary because `ReactComponent.Mixin.receiveProps` already asserts that this component is mounted. (Being mounted guarantees you have a DOM ID, look at `ReactComponent` and see when `this._rootNodeID` is mutated.)
Unbreaking falsy check on style values

Style values can be the number zero which is an actual value. So we check for
null instead. The empty string case falls through.
Sync latest JSX transform - all children passed as separate arguments

This was a part of e1fe13d0cbb6063594a0b9dc712a8ee6006bb2e3 upstream.
Fix textchange event enqueueing

(Was broken by e1535fbd71d8c89c82cd9d9073c1ee97ee6a3b00.)
Fix `EventPluginRegistry` Unit Tests

Dumping the mock cache isn't dirying the modules, so we have to unit test a different way. If we can fix our unit test framework, we should revert this.

Also, I added strict mode to `EventPluginRegistry.js`.
Merge pull request #92 from spicyj/fix-textchange

Fix textchange event enqueueing
Merge pull request #89 from vjeux/patch-4

Exposing ReactProps as React.Props
getDOMNodeID: Don't return .id on random objects

If you defined a global named `id` (a horrible name, I know) then
getDOMNodeID(window) would return that object. Since only DOM nodes can
have IDs, this should be a noop change otherwise.

Test Plan:
Verified that document.documentElement and document.body both support
getAttributeNode properly in latest Chrome and in IE8.
Merge pull request #91 from yungsters/master

Fix `EventPluginRegistry` Unit Tests