------------------
* ``Callbacks`` can be used as context manager, which provides a ``Register(callback, function)``,
which automatically unregisters all functions when the context manager ends.
* ``Callback.Register(function)`` now returns an object with a ``Unregister()`` method, which
can be used to undo the register call.