move-only: make the CChainState interface public
Summary:
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
Test Plan:
ninja all check-all
Reviewers: #bitcoin_abc, jasonbcox
Reviewed By: #bitcoin_abc, jasonbcox
Subscribers: jasonbcox
Differential Revision: https://reviews.bitcoinabc.org/D5996