session: Unexport worker interface if session is disposed early
At the moment we don't unexport the worker interface if the session is disposed before gnome-shell connects to the connection.
In theory it should get cleaned up automatically when the connection is freed, but if there is a delay in it being freed (such as a ref held on it from another thread to dispatch a method handler), then the worker interface could get dispatched with a disposed session object.
This commit makes sure to explicitly unexport the worker manager interface if the session is disposed before a connection is made.
It also switches to using g_signal_connect_object instead of g_signal_connect for an extra level of protection.
Closes #871 (closed)