Clarify and rationalise interaction between dormancy and have-we-been-bootstrapped, and dormancy code

TorClient has two kinds of dormancy: 1. Dormancy 2. not-having-ever-had-boostrap()-called.

This is confusing, both at an API level, and internally. We should rationalise this.

  • Define what the modes of a TorClient should be
  • Define sensible APIs for selecting those modes, and retcon appropriate semantics for existing APIs
  • Rationalise the internals so that the mode we're in has a single source of truth and can be determined and tracked as appropriate
  • Abolish the proliferating crate-level Dormant enums, and instead do something via SleepProvider or something !845 (comment 2853190)