* Remove Sabre's manual insertion-order iteration and unnecessary sorts
The manual insertion-order tracking was initially added in 02a1939
(gh-9012) during a complete rewrite of the scoring algorithms for Sabre
to demonstrate that the new algorithm could be made fully RNG
compatible. It maintained the identical iteration order to the previous
iteration once the front-layer data structure was swapped from being a
raw list to hash-based.
The new data structure doesn't require the manual tracking to be
reproducible as long as the iteration order is independent of the hash
seed. This swaps the relevant places over the `IndexMap` to be able to
remove a lot of the manual tracking. In casual testing, this didn't
appear to have much effect on performance, but the resulting code is
much simpler.
The sorts (and deliberate canonicalisation of the swaps) was necessary
to match RNG compatibility in the pre-relative-score Sabre, but since
the swaps are now iterated through in a deterministic order and
guaranteed to be generated only once each (the previous version used a
hashset to remove duplicates), neither step is necessary.
For a QV circuit of depth 5 at 1081 qubits on heavy hex, this is worth
almost a 2x speedup in routing performance.
* Fix RNG-related tests
* Add RNG-change note