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
Replace react-test.js prelude with a custom prelude for now.

This is far from ideal, but it seems to be the easiest way to expose the
require.dumpCache method for use by require("mock-modules").dumpCache.

Upstream patch that would make this hack unnecessary if accepted:
https://github.com/substack/browser-pack/pull/16
Make require("mock-modules").dumpCache actually dump the module cache.
Call require("mock-modules").register in every mockable module.
Enable module.exports mocking in react-test.js.

We don't currently attempt to mock modules automatically, but we do
respect require("mock-modules").mock, .dontMock, and .dumpCache.

I'm going to keep investigating auto-mocking, since that would move us
much closer to the behavior used within Facebook.

Closes #154.
Closes #155.
Only mock when config.constants.__MOCK__ is true.

The meaning of __DEV__ is pretty overloaded, so depending on that was
asking for confusion.
Store dirtyMocks array globally so it can survive dumpCache().

When require("mock-modules").dumpCache() is called, all mock functions
previously created continue to refer to the old dirtyMocks array.

If we replace that array with a new one, those mock functions will never
have their .mockClear() methods called again.

The upstream version of mocks.js pulls a similar global trick, and I never
understood why until now.