[MagicalObserving] Use blocks to register and store observations, using weak references to the observing contexts.
[MagicalObserving] Added method to cancel all context observations.
[MagicalThreading] Added a reference to the context's associated thread (if any).
[MagicalObserving] Added method to observe a context and merge the changes using the original context's thread.