Include a HashSet variant that can be keyed on multiple keys.
Every element in the set has up to N keys, each of which may have differnt types. No value for any key may correspond to more than one element in the set.
Because Rust doesn't have variadic generics, I've had to use a macro to declare different variants of the set, for values of N between 1 and $BIG_ENOUGH.
We'll use this to implement a type that holds HasRelayIds.
I'm not hoping to merge this as-is; I just want a basic yes/no/maybe on the idea first.