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).
'clean up subscriptions and pending requests in componentWillUnmount ' +
        'to prevent memory leaks.',
      'Warning: MyComponent: componentWillMount() is deprecated and will be ' +
        'removed in the next major version.',
    ]);
    expect(() => ReactDOM.render(<Component />, container)).toWarnDev(
      'Warning: MyComponent: componentWillUpdate() is deprecated and will be ' +
        'removed in the next major version.',
    );
    ReactDOM.unmountComponentAtNode(container);
    instance.log('after unmount');
    expect(ops).toEqual([
      'getInitialState: false',
      'mixin.componentWillMount: false',
      'componentWillMount: false',
      'render: false',
      'mixin.componentDidMount: true',
      'componentDidMount: true',
      'mixin.componentWillUpdate: true',
      'componentWillUpdate: true',
      'render: true',
      'mixin.componentDidUpdate: true',
      'componentDidUpdate: true',
      'mixin.componentWillUnmount: true',
      'componentWillUnmount: true',
      'after unmount: false',
    ]);
  });
});