Refactor out the management of Consul servers
Refactor out the management of Consul servers

Move the management of c.consulServers (fka c.consuls) into consul/server_manager.go.

This commit brings in a background task that proactively manages the server list and:

*) reshuffles the list
*) manages the timer out of the RPC() path
*) uses atomics to detect a server has failed

This is a WIP, more work in testing needs to be completed.

vamage/consul,tugbabodrumlu/consul,Thib17/consul,lindenlab/consul,sunadm/consul,vamage/consul,sean-/consul,sweeneyb/consul,pmalmgren/consul,sweeneyb/consul,Thib17/consul,dankraw/consul,sean-/consul,youhong316/consul,andygoalkeeper/consul,jovandeginste/consul,rhyas/consul,mckennajones/consul,mshean/consul,dankraw/consul,hashicorp/consul,jovandeginste/consul,sweeneyb/consul,sequenceiq/consul,kylemcc/consul,samaitra/consul,sunadm/consul,kylemcc/consul,sequenceiq/consul,lindenlab/consul,leowmjw/consul,Pivotal-Pierre-Delagrave/consul,kylemcc/consul,hashicorp/consul,pmalmgren/consul,sequenceiq/consul,sequenceiq/consul,sunadm/consul,sunadm/consul,hashicorp/consul,jovandeginste/consul,kaskavalci/consul,Pivotal-Pierre-Delagrave/consul,scalp42/consul,leowmjw/consul,calgaryscientific/consul,sweeneyb/consul,sweeneyb/consul,calgaryscientific/consul,youhong316/consul,pmalmgren/consul,leowmjw/consul,i0rek/consul,scalp42/consul,kingland/consul,vamage/consul,mckennajones/consul,scalp42/consul,kaskavalci/consul,mckennajones/consul,sequenceiq/consul,tshak/consul,kingland/consul,scalp42/consul,samaitra/consul,zeroae/consul,kaskavalci/consul,42wim/consul,pmalmgren/consul,42wim/consul,dankraw/consul,zeroae/consul,mckennajones/consul,leowmjw/consul,tugbabodrumlu/consul,lindenlab/consul,pmalmgren/consul,sean-/consul,Pivotal-Pierre-Delagrave/consul,kingland/consul,42wim/consul,i0rek/consul,rhyas/consul,rhyas/consul,leowmjw/consul,zeroae/consul,42wim/consul,42wim/consul,lindenlab/consul,tugbabodrumlu/consul,zeroae/consul,i0rek/consul,andygoalkeeper/consul,andygoalkeeper/consul,kaskavalci/consul,sean-/consul,Pivotal-Pierre-Delagrave/consul,tshak/consul,tshak/consul,mshean/consul,rhyas/consul,vamage/consul,kingland/consul,sean-/consul,kingland/consul,youhong316/consul,i0rek/consul,calgaryscientific/consul,tshak/consul,mshean/consul,calgaryscientific/consul,jovandeginste/consul,scalp42/consul,Thib17/consul,mckennajones/consul,dankraw/consul,kylemcc/consul,Thib17/consul,dankraw/consul,mshean/consul,tugbabodrumlu/consul,lindenlab/consul,i0rek/consul,youhong316/consul,Thib17/consul,tshak/consul,zeroae/consul,jovandeginste/consul,rhyas/consul,tugbabodrumlu/consul,andygoalkeeper/consul,Pivotal-Pierre-Delagrave/consul,mshean/consul,vamage/consul,sunadm/consul,kylemcc/consul,youhong316/consul,andygoalkeeper/consul,calgaryscientific/consul,samaitra/consul,kaskavalci/consul,samaitra/consul,hashicorp/consul,samaitra/consul