Make sure that a circuit doesn't use relays in the same family (#43)
This implements Relay::in_same_family
which is in turn used by ExitPathBuilder::pick_path` to avoid picking relays in the
same family.
Compared to the original C implementation, we are missing support for options EnforceDistinctSubnets and NodeFamilySets.
This has only been very lightly tested so far. It feels like a small test framework is missing to verify some properties of the path selection algorithm.
I'm both quite new to Rust and to Tor internals, I'll gladly welcome suggestions for improvements.