Reconnect to discoverd when the connection drops

This should drain the channel to prevent deadlocks:

```go
go func() {
    for _ = range ch {
    }
}()
c.l.Lock()
delete(c.reconnectWatches, ch)
c.l.Unlock()
close(ch)