Reconnect to discoverd when the connection drops

So I was locking / unlocking `connMtx` to effectively wait for a successful reconnection so that if multiple goroutines try to reconnect, only one of them will actually do the reconnect and the rest will just wait for the mutex to become available. I see though the race with the `reconnecting` variable.

If I simply use a mutex to wrap access to `c.client`, this will mean only one goroutine will reconnect at once, but then other goroutines which are aware of the disconnect (as they got an `rpcplus.ErrShutdown` error) will call `reconnect`, wait to acquire the lock and reconnect themselves right? There still needs to be some way for the goroutines to know a reconnect is happening and to just wait for it to finish.