Found during review: cluster mempool: control/optimize TxGraph memory usage
Fixes
SplitAll() always calls ApplyRemovals() first, for a singleton, it empties the cluster, therefore any SingletonClusterImpl passed to Split() must be empty.
TxGraphImpl::ApplyDependencies() first merges each dependency group and asserts the group has at least one dependency. Since parent != child, TxGraphImpl::Merge() upgrades the merge target to GenericClusterImpl, therefore the ApplyDependencies() is never dispatched to SingletonClusterImpl.