bandwidth testing circuits should be allowed to use our guards
In git commit 267e61d0, we fixed bug #654 (moved), where relays were putting all their bandwidth testing circuits over the same small set of guards, thus having an accidental bottleneck, meaning we got an inaccurate bandwidth estimate.
But we fixed it by having them never use a guard for their first hop of a testing circuit, which in turn produced surprising behavior in tiny test networks, because relays can't make testing circuits if all the available relays are in their guard list.
teor fixed that in commit 22a1e9cac by making us not avoid our guards if testingtornetwork, and not avoid our guards if all the nodes in the consensus are on our guard list. It turns out that latter check isn't quite good enough, because we're picking two hops, so having at least one relay in the network that isn't in our guard list isn't enough to complete a circuit.
The underlying problem is that when UseEntryGuards is true, the rest of choose_good_entry_server() is entirely about picking a new entry guard. Except we reuse it for some edge cases where we want to just pick some entry point and not use our guard list. Some refactoring or something seems wise.