Calling run_dispose on a GObject automatically disconnects all signals, which is exactly what we need.