Fix potentially unremoved Observer

This patch fixes an issue with map-stored Observer where multiple
Observer are stored using the same map key overwriting the previous
entry. It fixes a potential crash caused by unremoved observers
executing their callback method even if the parent object
(LevelWindowManager) has already been deleted.

See bug #13499