feat(chain): introduce new `list_ordered_canonical_txs`
Adds a new `list_ordered_canonical_txs` method which uses the new
`TopologicalIterator` on top of the result of `list_canonical_txs`
method, yielding the canonical txs in topological spending order.
The new `list_ordered_canonical_txs` guarantees that spending
transactions appears after their inputs, in topological "spending order".
- Introduce the new `TopologicalIterator` for level-based topological
sorting, based on Kahn's Algorithm, it uses the `ChainPosition` for
sorting within the same graph level, and it takes an `Iterator<Item =
CanonicalTx<'a, Arc<Transaction>, A>> of canonical txs.
- Introduce the new `list_ordered_canonical_txs` method to `TxGraph`.
- Update the existing tests under `test_tx_graph.rs` to verify the
topological ordering correctness.
- Update the existing `canonicalization` benchmark to also use the new
`topological_ordered_txs` method.
NOTE:
- I've squashed the previous commits into a single one, as they're
changing the same files and applies to the same scope.
- Also, I've partially used Claude to help with the Kahn's Algorithm.