GuardMgr: Almost finish wiring Bridges in as a guard substitute
This is a long branch, but the individual changes should be straightforward.
In this branch, we teach GuardMgr most of how to consume and use a BridgeDescProvider
and the bridge-related elements of GuardMgrConfig
, including:
- Getting a BridgeSet from the current BridgeDescProvider.
- Storing bridge configurations and the bridge on/off setting.
- Selecting guards from the correct Universe.
- Returning the proper kind of FirstHop if a bridge can be used to build circuits.
There is a lot of refactoring in GuardMgr here too: hopefully for the better.
NOT in this branch:
- Telling the
BridgeDescProvider
which descriptors we need.