Adding connection failovers, spec tests and some code cleanup.
Client will now try to reconnect to previously known servers if all servers become unavailable.