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`.
Actually, now I remember why I didn't do that. Because first class refs can't be mapped to a string. They're created by the component. So there's no way to define the mapping to individual refs ahead of time.

We could potentially provide a mapping from the "type" of component and the mock function that it will resolve to. E.g. if you're rendering a `<div />` it's ref will resolve to the "DivMock", and if it's rendering a `<CustomComponent />` it's ref will resolve to a "CustomComponentMock". Let's chat more about this today.