bus: use assert_return() for more API calls
bus: make sure that we always keep a ref to the bus when we dispatch callbacks

Otherwise the callback might unref the bus we are processing and destroy
the object while we are processing it.
bus: properly handle if new objects are installed in the node tree while we are dispatching to one