Use Guard as Fallback Directory

When a client hasn't used the Tor network for a few days, its consensus expires. If the authorities are blocked while it's offline, it can't bootstrap.

However, it has (almost) enough information to bootstrap from a semi-trusted relay - its guard.

This change requires:

  • a proposal
  • an additional line GuardFallbackDir in the state file, formatted like a FallbackDir line, if the guard is also a directory mirror

When legacy/trac#12538 (moved) is implemented, every relay (and therefore every Guard) will be a directory cache by default.