along with DisconnectResult, and CBlockIndexWorkComparator.
The CChainState interface needs to be known to the rest of the system because
many global functions will move to CChainState methods. This is to allow
other parts of the system to be parameterized per chainstate instance
instead of assuming a single global.
This is a partial backport of Core PR15976 : https://github.com/bitcoin/bitcoin/pull/15976/commits/d7c97edeea8cee10ad9da1f940d39d5073ac142d