Abstract out the TxRequestTracker public interface
Summary:
There is zero conceptual need for such an interface as there is no plan
to have different implementations, but this allows for declaring the
public methods in the header without having to pull all the internals
into the public space. This will become relevant when the
TxRequestTracker becomes a template.
Note: in order to instanciate the concrete implementation class without
knowing it, a static factory method is added to the base class. This is
unusual, as the base class is then responsible for instanciating its
child class, hardcoded (since there is a single one).
Depends on D9566.
Test Plan:
ninja all check-all ./test/functional/test_runner.py p2p_tx_download ninja bitcoin-fuzzers
Reviewers: #bitcoin_abc, deadalnix
Reviewed By: #bitcoin_abc, deadalnix
Subscribers: Mengerian, deadalnix
Maniphest Tasks: T1611
Differential Revision: https://reviews.bitcoinabc.org/D9567