Rename onion-* cargo features to hs-* in tor-* crates
Several of our crates have HS code feature gated by names like "onion-client", "onion-service", "onion-common".
In the Tor protocols and codebase the word "Onion" can mean (at least):
- The Onion Router - the whole protocol suite
- A router's medium-term circuit extension key KP_onion_*
- An "onion handshake", the hop-by-hop circuit handshake
- Relating to Hidden Services
- An "onion proxy", which is a Tor client presenting a SOCKS (or similar) proxy to (mostly)-naive local clients
This means that a crate cargo feature "onion-common" (for example) could mean almost anything. A cargo feature "onion-client" could mean being a client for the Tor protocols as a whole. (Which is currently always the case for our codebase, but might not always be true - in the future we may want to ship a relay-only profile of arti.)
All these features should be renamed to hs-* in tor-* crates.
In the higher-layer arti-* crates there is an argument that hs-* is too raw or internal or off-brand or something. "onion-client" is still wrong there. Here the features should be renamed to hs-* or hidden-service-* or onion-service-{server,client} or some such.
CC @nickm because we had a conversation about this on IRC and I think this will be controversial.
Rationale
It is a fundamental principle of naming that a name should always refer to the same thing. This principle can reasonably be violated in informal and more marketing-y context, perhaps; or, when the name is used for different aspects of the same thing, or isomorphic things, and there is no risk of confusion.
Here, there is very substantial risk of confusion. Within code and specs, we should be precise.
See also #746 (closed)