Fix: Always return boolean from isNullComponentID
Warn when casing CSS vendor prefixes incorrectly

Fixes #2487.

Test Plan: jest
Stop treating key={null} as an unspecified key

This reverts commit dd92786fb038c4eb7c6545928646ec8aa9ecfa36, which was intended to be temporary for the 0.12 release.

Fixes #2394.
Update stripTypes transform to use fixed up jstransform transform
Merge pull request #2385 from shripadk/bool-fix

Fix: Always return boolean from isNullComponentID
Make ReactTextComponent properly injectable

ReactTextComponent's implementation is DOM-specific; instead of flattenChildren creating the ReactTextComponent instances, ReactNativeComponent now takes care of having ReactTextComponent injected and creating the component instance. I also renamed ReactTextComponent to ReactDOMTextComponent and moved it to browser/ui/ where it belongs. ReactDOMTextComponent no longer inherits directly from ReactComponent and instead implements construct and {mount,receive,unmount}Component directly.

This diff removes `ReactTestUtils.isTextComponent` which should have previously never returned true when using public APIs.

Test Plan: jest, use ballmer-peak example.
Fix problems with empty component ID registration

Fixes #2493, also closes #2353 as it incorporates a variant of that fix.

- Instead of having getEmptyComponent return `<noscript />` directly, wrap it in a class that we can easily identify later as being an empty component
- Cache the empty component element instead of recreating one each time
- Avoid touching the nullComponentIdsRegistry dictionary at all when not dealing with empty components
- Move empty-component tests to a separate file

Test Plan: jest
Merge pull request #2527 from gabelevi/master

Update stripTypes transform to use fixed up jstransform transform
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.
Inject browser mixin before full-page components

createFullPageComponent doesn't reference ReactBrowserComponentMixin directly so the mixin should get injected before the components are created. Previously, this test failed because getDOMNode wasn't present on the component instance.

Test Plan: jest
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.