Put most non-universally-needed functionality behind features
There is functionality in the arti crates right now that nobody uses, because it exists to implement features that we don't even have yet (like onion services, relay support, and bridge clients). These patches put most of that functionality behind a (hopefully reasonable) set of features.
In all, this saves less than half a percent of our binary size: The real benefit is to factor the code in such a way that you don't have to use features you don't need.
There are some remaining cases that I didn't do here, since they are trickier. I'll open another ticket for those.
Closes #125 (closed).