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.