Without that cleanup, DBusConnection might try to call a dangling
std::function in case the DBusObject was removed before. That is for
example happening during shutdown.
Previously, the DBusconnection had to be set at construction time and could
not be changed over the DBusObject life time. Now a new connection can be
set anytime and as often as required.
The shared ownership is now also properly implemented by shared pointers.
ref T291
QtDBus was the main component of xswiftbus' Qt dependency. This is the
first preparation step to get xswiftbus Qt free.
The new implementation is based on the low level libdbus library, which
was also in use by QtDBus itself. But instead of QtDBus, we use now a thin
C++ wrapper. To keep DBus handling async, libevent is used to monitor
timeouts and fds.