Circmgr needs a significant backend revision
The existing circmgr implementation doesn't always do the right thing. It keeps circuits and pending circuits in the same data structure. When a pending circuit is done, everything that was waiting for it is notified... but other streams that were waiting for a different port which the same circuit happens to handle are not notified.
We should have a new implementation that keeps a list of waiting requests, and launches circuits as appropriate to meet those streams' needs. When a circuit is done, it should notify every request that would be satisfied by it.
This doesn't have to be done for milestone A1, thankfully.