clientv3: don't race on upc/downc/switch endpoints in balancer
clientv3: don't race on upc/downc/switch endpoints in balancer

If the balancer update notification loop starts with a downed
connection and endpoints are switched while the old connection is up,
the balancer can potentially wait forever for an up connection without
refreshing the connections to reflect the current endpoints.

Instead, fetch upc/downc together, only caring about a single transition
either from down->up or up->down for each iteration

Simple way to reproduce failures: add time.Sleep(time.Second) to the
beginning of the update notification loop.

ajityagaty/etcd,YuleiXiao/etcd,gyuho/etcd,xiang90/etcd,cockroachdb/etcd,rnaveiras/etcd,mqliang/etcd,gyuho/etcd,armstrongli/etcd,plasticbox/etcd,lorneli/etcd,rnaveiras/etcd,glevand/coreos--etcd,a-robinson/etcd,a-robinson/etcd,whuwxl/etcd,mickep76/etcd,yudai/etcd,vimalk78/etcd,sebrandon1/etcd,mkumatag/etcd,glevand/coreos--etcd,heyitsanthony/etcd,ajityagaty/etcd,bdarnell/etcd,akauppi/etcd,joshix/etcd,dannysauer/etcd,li-ang/etcd,bdarnell/etcd,ajityagaty/etcd,sinsharat/etcd,mickep76/etcd,sebrandon1/etcd,whuwxl/etcd,sinsharat/etcd,etcd-io/etcd,fanminshi/etcd,dannysauer/etcd,visheshnp/etcd,bluebreezecf/etcd,akauppi/etcd,YuleiXiao/etcd,li-ang/etcd,xiang90/etcd,mqliang/etcd,bluebreezecf/etcd,visheshnp/etcd,joshix/etcd,etcd-io/etcd,fanminshi/etcd,armstrongli/etcd,mkumatag/etcd,mkumatag/etcd,etcd-io/etcd,mqliang/etcd,coreos/etcd,coreos/etcd,vimalk78/etcd,yudai/etcd,plasticbox/etcd,lorneli/etcd,rnaveiras/etcd,cockroachdb/etcd,heyitsanthony/etcd