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