Improve Observable by adding a function that calls out to each observer
Improve Observable by adding a function that calls out to each observer and handles the case of disappearing observers. There is an added benefit of the code being a little cleaner.
It's theoretically possible that the old implementation which called out to disappearing observers was being relied upon. If any regressions are found in this MR, they should be fixed by not relying on that behaviour any longer.