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).
let errorBoundaryFound: boolean = false;
    let willRetry: boolean = false;
    let errorBoundaryName: string | null = null;
    
    
    
    if (failedWork.tag === HostRoot) {
      boundary = failedWork;
      if (isFailedBoundary(failedWork)) {
        
        
        
        didFatal = true;
      }
    } else {
      let node = failedWork.return;
      while (node !== null && boundary === null) {
        if (node.tag === ClassComponent) {
          const instance = node.stateNode;
          if (typeof instance.componentDidCatch === 'function') {
            errorBoundaryFound = true;
            errorBoundaryName = getComponentName(node);
            
            boundary = node;
            willRetry = true;
          }
        } else if (node.tag === HostRoot) {
          
          boundary = node;
        }