сбор тиров и карты бакетов в sync topology
Ориентиры: !61 (merged), #63 (closed), #74
В рамках задачи нужно:
- добавить получение tier names -> bucket counts (tiers: dict[str, int]) из системной таблицы тиров
- добавить получение карты бакетов bucket_map через _pico_bucket(tier) для известных тиров
- переиспользовать общие структуры Topology, EventBuckets, BucketRange, Bucket и parsing helpers
- не дублировать async-модель топологии, а расширять тот же общий Topology
- сохранить поведение, при котором ошибки получения bucket map для одного тира не ломают весь topology refresh
- поддержать ситуацию, когда tiers еще не получены: в таком случае bucket map просто не обновляется
Отдельно нужно сразу учесть выводы из #74: _pico_bucket(tier) возвращает полный snapshot бакетов тира.
В этой задаче topology не должна менять состав пула.