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.