Wrap every DOM node in a Composite Component

...unless they already have a wrapper. Also, add tagName to every wrapper.

This ensures that refs are consistent. They always look like composite
components. This effectively hides the internal implementation details of
real DOM components since you can no longer get a ref to one.

In the future we might want to drop this wrapper and have refs refer
directly to the DOM node.

I currently use a hacky way of auto-wrapping inside of ReactNativeComponent
so that any given string can be wrapped. Better suggestions are welcome.
Merge pull request #2537 from sebmarkbage/hidedomcomponentinternals

Wrap every DOM node in a Composite Component
Fix up variable names and types to be correct

Test Plan: jest
Don't mutate .props.style in ReactDOMComponent

We currently make a copy of .style because we support mutating the style object in place. Instead of storing it back on props, store it separately on the component instance so that we don't mutate props anywhere. This is gross but should all be cleaned up after #2008 is resolved.

Test Plan: jest
Remove transferPropsTo

I'd like to outlaw prop mutation altogether, and now seems like a fine time to remove transferPropsTo.

Test Plan: jest
Move logic for `null` to instantiateReactComponent

This cleans up the code a bit and also brings us closer to allowing any ReactNode to be rendered at the top level.

Test Plan: jest
Drop inaccessible methods

These are no longer accessible and the isOwnedBy check is only used in
a method that is not accessible.
Drop this.props
Drop ReactOwner.Mixin

This is not used anywhere else. To avoid overabstraction we should just
inline this.
Drop the _owner and _lifeCycle field on internal instances

The _owner field is unnecessary since it's reachable from _currentElement.

The _lifeCycle field is unnecessary because an internal component should
not even need to exist at all if it's unmounted. It should be dereferenced
internally, and never exposed externally.

The only case where it's important is for batching updates where we
currently avoid calling performUpdateIfNecessary if it's mounted. However,
this function is already only executed "if necessary" so we just make sure
that it's not necessary after unmount by resetting all the pending fields.
Add test for warning in ReactElementValidator

I previously had a mistake here, so I'm adding a unit test to ensure that I
don't make the same mistake again.
Merge pull request #2539 from sebmarkbage/cleanupinternals

Clean up a bunch of internal methods and fields that are now unnecessary
Update 10.4-test-utils.md

This adds minimal valid event data to the Simulate.change example for a text input field.
Shallow rendering support (#2393)

Now handles updating. Haven't looked at refs yet.
Merge pull request #2497 from graue/2393-v1

Basic shallow rendering support (#2393)
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