Don't trigger mouse events on native button elements that are disabled

This adds a `ReactDOMButton` module that shims the native `<button>` React component so it doesn't receive mouseup, mousemove, mousedown, click, or double-click events when its disabled property is truthy.
Change vendored module isDOMNode -> isNode
Make React batching strategy injectable
React.isValidClass

Sometimes you may need to detect if a value is a valid React class constructor. This enables that and prevents future consumers from getting caught in the trap of depending on an internal implementation detail we might change.

Currently this works for classes created with `React.createClass` as well as `React.DOM.*`.
Make ReactDefaultPerf work server-side

We were reading from window which was throwing when ReactDefaultPerf was injected.
Expose the instance cache

We need access to the instance cache for debugging tools. Ideally we want to
expose a more stable and supported interface but this seems like a quick win,
for now.