This is pretty much a complete rewrite. It gives a much nicer API to
understand from the documentation. It also means that it doesn't rely on
\#[doc(hidden)] methods (except for `Interchange::const_new` so that it
can be removed once the required compiler features are stabilized)
Because everything doesn't need to be `'static` anymore, it can also be
tested efficiently with Loom, ensuring that there are no possible race
conditions.
It is a significantly breaking change