Трекинг топологии для sync

Добавить в синхронную часть драйвера read-only представление топологии кластера по аналогии с !42 (merged). Интерфейс нужно построить так, чтобы в будущем источник данных можно было заменить на notification-based источник без переписывания модели Topology и кода Pool. В рамках задачи нужно:

  • добавить sync-аналог TopologyTracker
  • реализовать получение инстансов и репликасетов из системных таблиц
  • переиспользовать общие структуры Topology, EventInstance, EventReplicaset и тд
  • добавить Pool.topology как read-only view текущей известной топологии
  • добавить при Pool.open() _topology_tracker.start(), при Pool.close() _topology_tracker.stop()
  • добавить настройку topology_update_interval, по аналогии с async
  • поддержать режим отключения трекера через topology_update_interval=None
Edited by Даниил Горляков