Merge adjacent ReactTextComponents in flattenChildren

Includes #1988 (so click on the last commit below to view actual changes).

This PR is a super simple isolated implementation for merging adjacent ReactTextComponents just before rendering. So this does *not* affect `this.props.children` or `cloneWithProps`. It's currently not re-entrant, it is really easy to fix simply by storing it in a magic key inside `traverseContext` instead, but that doesn't seem worth it.

With this and something like #1570 we should be able to get rid of all excess markup.

~~Massively increased test-coverage for `ReactMultiChildText`.~~