Set textarea value when changing content

At http://jsfiddle.net/spicyj/W4QLq/, typing into the textbox would cause
clicking the button to do nothing; now it should work.
Don't set value if it'll be a noop
Don't let textarea value change via textContent

Turns out my tests before weren't particularly useful because
receiveProps doesn't end up running componentDidUpdate since the
transaction never finishes. Now they use replaceProps instead (and I
verified that commenting out the "rootNode.value = ..." line makes the
tests fail, which wasn't true before).
Adds optional callback to `setState`

This commit adds an optional callback as a second argument to
`setState`, to be called after `setState` runs.

We never guarantee synchronous execution of `setState`, and as per
@phunt, we don't want to make that guarantee because we may eventually
batch calls to `setState`.  @jwalke agrees with him.
Updated docs and check for truthiness

Change api docs to reflect presence of the new argument.  In addition,
callback was change to require only a "truthy" value.
markdown syntax

Small problem with markdown syntax in syntax-highlighted block.
Add callbacks to all public-facing state/props methods

All public facing {set,replace,force}{props,state} methods now support
callbacks.
Merge remote-tracking branch 'origin/master' into textarea-update-value
Don't update value or textContent unnecessarily

_updateDOMChildren was already updating textContent so we don't need to
do it in _updateDOMProperties. Additionally, don't update .value if
it'll be a noop because it has side-effects (like moving the cursor) in
some browsers (like IE 9).

Refactor tests to be a bit more robust and a bit cleaner too.
Remove textContent tests; they break in phantomjs
The compare_size cache gets wiped out with `grunt clean`

`.grunt/` is the directory that is suggested for storing task related
files, and this file is not useful if it gets wiped out often. So I'm
moving the compare_size cache into `.grunt/` so we keep it around
longer.
Cache Default Props

The `getDefaultProps` return value should not be dependent on any external data (including `this.props` and `this.state`), so the return value should be consistent everytime we call it.

This caches the return value so we do not do work and allocate memory unnecessarily.
Fix `onChange` for File Input

Makes sure that `onChange` fires for file inputs.
Don't pass a null context to Function.prototype.call.

This prevents PhantomJS tests from hanging in the open-source React repo.

Until the advent of `"use strict"`, passing `null` as the context object
to `.call` or `.apply` resulted in `this` taking on the value of the
global object inside the invoked function.

Technically the `"use strict"` directive is supposed to make it possible
that `this === null`, but strict mode is not respected by all browsers,
including (unfortunately) PhantomJS.

Since these `expect`-ations are just testing binding behavior, let's not
make them also test strict mode `this` handling.
Merge pull request #124 from zpao/keep-compare-size-cache

The compare_size cache gets wiped out with `grunt clean`
Changed JSON data in the tutorial to use double quotes for strings.
Refactor of ChangeEventPlugin

some refactoring and also handle if `blur` doesn't fire on the form
input in IE8 (by always cleaning up on focus). per discussions with
@balpert
Change ReactID.ATTR_NAME to "data-reactid"

This final change is what we've all been waiting for.

Note that it no longer makes sense to use `document.getElementById` in
`getNode`, because that only ever worked with "id" attributes.
Merge pull request #128 from mathieumg/master

Double quotes for strings in JSON data
Recommend Node v0.10.0 due to https://github.com/isaacs/npm/issues/2907