Update 10.4-test-utils.md

This adds minimal valid event data to the Simulate.change example for a text input field.
Move mountComponentIntoNode and setProps out of ReactComponent

This is part of moving more logic out of the base classes.

setProps, replaceProps etc. are not accessible from anything other than
ReactClass so we can safely move it to ReactCompositeComponent.

mountComponentIntoNode is tightly coupled to ReactMount. It's part of the
outer abstraction, the mount point, not the individual component.
Move _pendingX into ReactCompositeComponent

Since setProps can no longer be called on anything but composites, we can
move this complexity into ReactCompositeComponent.
Ensure that all internal instances have consistent properties

Use preventExtensions so that we can't add expando properties to internal
instances. This ensures that the hidden class is kept more consistent.
Unused variables
Merge pull request #2546 from sebmarkbage/cleanupinternals

Move more stuff out of ReactComponent
Added warning if owner-based and parent-based contexts differ.
Merge pull request #2509 from jsfb/use-parent-context

Initial implementation of issue #2112
Fixed 'imports' to resolve merge conflict
Move ComponentEnvironment out of ReactComponent

We currently have three DOM specific hooks that get injected. I move those
out to ReactComponentEnvironment. The idea is to eventually remove this
injection as the reconciler gets refactored.

There is also a BackendIDOperation which is specific to the DOM component
itself so I move this injection to be more specific to the DOMComponent.

E.g. it makes sense for it to be injectable for cross-worker DOM operations
but it doesn't make sense for ART components.
Merge pull request #2508 from jsfb/monitor-with-context

Start monitoring uses of withContext, related to issue #2112
Merge pull request #2550 from sebmarkbage/cleanupinternals

Move ComponentEnvironment out of ReactComponent
Permit th  attribute
Update tutorial language to be more explicit.

The word "Friends" does establish a relationship however it does not fit in the vernacular of react. 
This change makes the phrase more explicit and more familiar.
Stop Mutating Merged Lifecycle Results

Summary:
Currently, `ReactClass` mutates values returned by `getDefaultProps`, `getInitialState`, and `getChildContext`. This is bad because the objects may, for example, be cached and re-used across instances of a React component.

This changes `ReactClass` to instead create a new object. In return for allocating a new object, I've replaced `mapObject` with a `for ... in` so that we are no longer allocating an unused object.

Fair trade, IMO.

Test Plan:
Ran unit tests successfully:

```
npm run jest
```

Conflicts:
	src/core/ReactCompositeComponent.js

Conflicts:
	src/class/ReactClass.js
Merge pull request #2464 from yungsters/immutable

Stop Mutating Merged Lifecycle Results
Animation documentation for ReactTransitionGroup

Update to the animation documentation for ReactTransitionGroup to clear the air on where one can use it.

If someone tries to use it off of React.addons.ReactTransitionGroup, which is undefined, instead of its real location, React.addons.TransitionGroup, they get a vague error about being unable to set defaultProps of undefined in the React createElement body.
Preserve Implicit Method Names

Summary:
Changes the way we instrument methods for `ReactPerf` so that developer tools can assign implicit method names to measured functions.

Reviewers: @zpao @sebmarkbage
Merge pull request #2465 from yungsters/perf

Preserve Implicit Method Names
Remove some invariants and deadcode

These are not necessary if we enable type checks. Static or dynamic.

They're distracting my greppability.

Also, some dead code in shallow rendering.