Coalesce warnings for deprecated lifecycle hooks and print single message after reconciliation (rather than one per component-type).

Relates to PR #12028 and [this comment](https://github.com/facebook/react/pull/12028#discussion_r162420575).
const props = workInProgress.pendingProps;
    const unmaskedContext = getUnmaskedContext(workInProgress);
    instance.props = props;
    instance.state = workInProgress.memoizedState;
    instance.refs = emptyObject;
    instance.context = getMaskedContext(workInProgress, unmaskedContext);
    if (workInProgress.type != null && workInProgress.type.prototype != null) {
      const prototype = workInProgress.type.prototype;
      if (enableAsyncSubtreeAPI) {
        if (prototype.unstable_isAsyncReactComponent === true) {
          workInProgress.internalContextTag |= AsyncUpdates;
          workInProgress.internalContextTag |= StrictMode;
        }
      }
    }
    if (__DEV__) {
      if (workInProgress.internalContextTag & StrictMode) {
        ReactStrictModeWarnings.recordLifecycleWarnings(
          workInProgress,
          instance,
        );
      }
    }
    if (
      typeof instance.UNSAFE_componentWillMount === 'function' ||
      typeof instance.componentWillMount === 'function'
    ) {
      callComponentWillMount(workInProgress, instance);