Error handling tweaks

This patch does two things;

When we lose a connection and reconnect, we do so in a strict sequence so that we only ever retry the failed host after trying all the others.  The client also shuffles the list of hosts, so that if there is more than two trackers, clients will use the remaining ones when one fails.

We have found the most of the error responses we receive are caused by a particular tracker going bad in some way.  Usually, losing database access, or another process making the machine OOM.  We thus force a reconnection to a different tracker after every error.