feat(widgets: music: backends: spotify, clementine): wait for dbus messages instead of polling