Simplify lifecycle notifiers and observers.

The following changes are made to the implementation of 
lifecycle notifiers and observers:

 - Avoid keeping duplicate hash sets of registered observers.

 - Let the C++ type system handle type safety of the observer
   set, letting go of the notion of an 'observer type' which
   was dynamically checked for.

 - Extend parameterization of LifecycleNotifier<> and
   LifecycleObserver<> to more closely couple the notifier
   and observer pairs. This allows the retirement of the
   ad-hoc function templates {un}observeContext().

 - Devirtualize the add/removeObserver() notifier methods.

R=haraken
BUG=462949

Review URL: https://codereview.chromium.org/968633002

git-svn-id: svn://svn.chromium.org/blink/trunk@191062 bbb929c8-8fbe-4397-9dbb-9b2b20218538
24 files changed
tree: 530e304791fca89ba3645ddd0778ab2712529096
  1. third_party/