Extract CmaCaseObserverRegistry

Pull out lists of observers for CMA cases from the bloated
ObserverRegistry into a registry of their own. As a result the
CmaCaseServiceRegistry only needs to know about the
CmaCaseObserverRegistry instead of getting all observers.

It also allows us to clean up the method names to be more generic, which
should allow us to find commonalities between observer registries for
different document types more easily.