[Docs] document optional param for renderComponentToString
Remove custom attrs properly when setting to null

I don't think this particular codepath was exercised at all (because all the callers call deleteValueForProperty) but this fixes a bug here nonetheless.
add chinese translation for 01-why-react.md
fix some translation error
fix some translation error
Merge branch 'master' of github.com:rayqian/react

Conflicts:
	docs/docs/01-why-react.zh-CN.md
Normalize whitespace for transformed JSX code
Update jasmine-support.js

fix typo in multiple error messages.
fix `(`
make translation better
add translation for getting-started.md
change some translation words
Revert "Merge pull request #1234 from RReverser/pure-cjs"

This reverts commit 7987e6a51dd6e33d6736e98f038d4ace545feabe, reversing
changes made to d88d4796854569e9352a6d81489262f6566b75b4.
Sync latest Immutable changes
Replace function expression with for loop

isCustomAttribute used an anonymous function in place of a for loop.
Swap it out so we're not allocating unnecessarily.
don't try to use Object.prototype methods as transfer strategies in ReactPropTransferer.mergeProps

While looking up a detail of how `transferPropsTo()` works I noticed that we never check `TransferStrategies.hasOwnProperty(thisKey)` when merging props, just `newProps.hasOwnProperty(thisKey)` and a truthy test for `TransferStrategies[thisKey]`. This means that if our `newProps` has keys like `toString`, `valueOf`, or `constructor` etc. set, we will pull these functions off `TransferStrategies` and invoke them when merging props. In most cases this will just result in a failure to merge and some code without side effects being run but in the case of `valueOf` it will actually generate an exception.
Logging use of objects as maps for children

Let's start logging objects as maps for children. We may want to deprecate this
and replace it with ImmutableMap and Map data structures instead.

This should ideally be logged in the recursive function but since that loses the
scope of where these children are passed it's easier to start tracking them
here to get an idea of how frequently and where it's used.
Separate immutable project

This moves Immutable and Immutable object into the new `immutable` project.
Silence tests unsupported in PhantomJS.

These tests can still be run in the browser using `grunt test --debug`.

This is a repeat of 42f8d155f8f240c457c969ac683d8b25876708ee. For posterity, we
do this because Phantom has a problem with Object.freeze and the test runner
can't do __DEV__ right (because we get rid of that in the build step).
Upgrade browserify