Fix: Always return boolean from isNullComponentID
Adding "appear" phase to ReactTransitionGroup and ReactCSSTransitionGroup.

"appear" differs from "enter" in that all children of a transition group at mount time will "appear" but will not "enter". All children later added to an existing transition group will "enter" but not "appear".

This extra transition phase allows for animation-on-mount effects.

A mirroring "appear" prop has been added to ReactCSSTransitionGroup, however for reverse-compatibility (and because "appear" is less common) it defaults to false.

Thanks to @afa for his work investigating the possible ways to implement this.
Update ref-09-glossary.md
Merge pull request #2512 from leebyron/transition-appear

Adding "appear" phase to ReactTransitionGroup and ReactCSSTransitionGroup
Merge pull request #2514 from jvalente/patch-1

Update ref-09-glossary.md
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.