One side effect is that the existence of `getDefaultProps` will now affect whether or not `this.props` is the same as the `props` passed in. Is this a concern at all? Components are not supposed to mutate `this.props`, but this seems like a hard-to-debug case waiting to happen.

What if we always `merge(newProps)`?