validation: add ResetChainstates()
Necessary for the following test commit.
https://github.com/bitcoin/bitcoin/pull/25667/commits/00b357c215ed900145bd770525a341ba0ed9c027
test: add reset_chainstate parameter for snapshot unittests
This CreateAndActivateUTXOSnapshot parameter is necessary once we
perform snapshot completion within ABC, since the existing UpdateTip
test will fail because the IBD chain that has generated the snapshot
will exceed the base of the snapshot.Being able to test snapshots being loaded into a mostly-uninitialized
datadir allows for more realistic unittest scenarios.
https://github.com/bitcoin/bitcoin/pull/25667/commits/3c361391b8f5971eb3c7b620aa7ad9b437cc515e
Backport note: this process of resetting the chainstate without also resetting the block index would cause CheckBlockIndex to fail on assert(setBlockIndexCandidates.count(pindex))); after D4717 made CheckBlockIndex run on intermediate steps in ActiveBestChain. I disabled CheckBlockIndex until after the snapshot chain is activated.
This is a partial backport of core#25667
Depends on D14652