Basic shallow rendering support

WIP to fix #2393.

Now redone on top of the new ReactCompositeComponent/ReactClass separation (#2445). Still only handles initial rendering not updating, but this is a simpler implementation that should be easier to add the missing parts to.

Sorry about closing the old PR (#2459), I'll just force-push next time I do a new version of a PR.

As a bonus, per @sebmarkbage's recommendation, this defines the validated flag to be a non-enumerable property, and avoids setting owner on the shallowly-rendered component, so we can now do a straight equality test on the expected and actual results and avoid helper functions like `areElementsEquivalent`.
You're not really using any logic in this file. It's mostly just validation logic and figuring out what to do about native components. Since you won't test native components using this strategy, you won't shallow render native components.

Once you remove all the stuff you're not using, this will simply just be constructing a new instance of the ShallowMixin. You can probably just move all that stuff into the ReactTestUtils so we don't have to deal with this intermediate.