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).
if (debugRenderPhaseSideEffects) {
      new ctor(props, context); 
    }
    const instance = new ctor(props, context);
    const state =
      instance.state !== null && instance.state !== undefined
        ? instance.state
        : null;
    adoptClassInstance(workInProgress, instance);
    if (__DEV__) {
      if (
        typeof ctor.getDerivedStateFromProps === 'function' &&
        state === null
      ) {
        const componentName = getComponentName(workInProgress) || 'Unknown';
        if (!didWarnAboutUninitializedState[componentName]) {
          warning(
            false,
            '%s: Did not properly initialize state during construction. ' +
              'Expected state to be an object, but it was %s.',
            componentName,
            instance.state === null ? 'null' : 'undefined',
          );
          didWarnAboutUninitializedState[componentName] = true;
        }
      }
    }
    workInProgress.memoizedState = state;
    const partialState = callGetDerivedStateFromProps(