if the realm is deleted while the gateway has a watch, it's disconnected
and watch_restart() will fail. this results in a watch handle of 0,
which leads to a segfault on ~RGWRealmWatcher when we pass it to
unwatch()
this commit cleans up the watch when watch_restart() fails, so we don't
try to unwatch() on destruction