This keeps track of lists of LifecycleListener's for the different
LifecycleEvent's. It implements a copy-on-write scheme so the lists on the
PMF can be shared by all PMs until first modified. Any modification to
a LifecycleListenerManager via add or remove will return a reference
to a new LifecycleListenerManager with the change applied. If a
LifecycleListenerManager becomes empty then null is returned.
remove(LifecycleListener l) Return a copy of this LifecycleListenerManager with l removed or
null if the resulting LifecycleListenerManager would contain no
listeners.