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.

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