Fix a bug where store migration forgets about legacy indexes.

IndexManager now also respects the availability guard (by virtue of transaction begin) when creating an index.
Only migrate legacy index.db store files if they exist.
Merge pull request #2088 from chrisvest/legacy-index-migration

Fix a bug where store migration forgets about legacy indexes.
Returns a copy of the suspicions set

out from the HeartbeatContext so that putting that set in a message that
gets processed and serialized later on won't risk concurrent modification
issues with other incoming message handling modifying that set.
Fix issue with cluster bricking if specific message lost when master leaves.

 o When a master leaves, if the leave learned message did not reach the machine with the
   lowest id, the other instances would wait for that instance to start an election
   indefinitely. The instance with the lowest id would realize it was out of date, but
   try and contact the (now dead) master to catch up, and would not retry when that failed.

 o This implementation fixes this by preferring instances more likely to be live and to have
   the paxos instance id we are interested in (see CommonContextStateTest and LearnerStateTest).
 o It also introduces proper retries if the catchup fails.