Keep track of unavailable managers to reduce latency.

When you configure multiple servers and you run multiple requests on the same client. It makes no sense to keep trying to connect to a manager that times out.

This PR, keeps track of the unavailable managers and gives priority to the managers that are actually responding.

This PR also attempts to improve load distribution when using multiple managers. Because managers are not only shuffled at boot time but also when starting a new request. (In the past a client pretty much never changed manager).