Our weighting algorithms probably behave strangely when guards are disabled
Most of our design for weighting and path-selection algorithms includes an assumption that guard nodes are going to get used (since urning off guards in normal use is a really bad idea). But some scanning and measurement tools want to run with guards disabled, and have Tor construct random paths. We should make sure that the random paths Tor generates in that case are sensible.
For example, we currently require the first hop to have the Guard flag, even if UseGuards is off. Is that good? Should we change it? What else do we need here?