Refactor: separation of concerns:

* Separate AccuMap and NotificationAccumulator.
* Separate produced type and type consumed by observer.
Support single list modification observers.