[backport] When disconnecting a block, notify children-first order
Summary
This is a backport of ABC D14939.
It may not be terribly useful at the moment since nothing in the node observes txn removals or cares about their order. This MR basically guarantees that notifications to observers happen in children-first order when disconnecting a block and emptying out the mempool. This ensures that observers are easier to code and maintain since they don't have to check if a parent was removed before its child.
Note: Currently there are no observers that receive this signal. This is purely an intellectual exercise as a backport.
In the future should we add a ZMQ publisher for notifying of txn removals, it might be advantageous to merge this MR.
Note 2: No tests could be written for this MR since there is no current
way within the codebase or outside of it to observe txn mempool
removals. However, I am attaching an adapted test from ABC that depends
on a hypothetical pubhashtxmprm
(hash tx mempool removal) ZMQ message
to arrive in order to test this change in functionality. See attachment: feature_tx_removal_order.py
Test Plan
ninja all check-all