fuzz: Consolidate fuzzing TestingSetup initialization
Summary:
Previously, the {Basic,}TestingSetup for fuzzers were set up in many ways:
- Calling InitializeFuzzingContext, which implicitly constructs a static const BasicTestingSetup
- Directly constructing a static const BasicTestingSetup in the initialize_* function
- Directly constructing a static TestingSetup and reproducing the initialization arguments (I'm assuming because InitializeFuzzingContext only initializes a BasicTestingSetup)
The new, relatively-simple MakeFuzzingContext function allows us to
consolidate these methods of initialization by being flexible enough to
be used in all situations. It:
- Is templated so that we can choose to initialize any of the *TestingSetup classes
- Has sane defaults which are often used in fuzzers but are also easily overridable
- Returns a unique_ptr, explicitly transferring ownership to the caller to deal with according to its situation
This is a backport of core#20946 [1/2]
https://github.com/bitcoin/bitcoin/pull/20946/commits/713314abfa224efceb7ba6fa7fef37c449902936
Note: this backport is a dependency for core#21866 (removal of global Chainstate)
Test Plan: ninja bitcoin-fuzzers
Reviewers: #bitcoin_abc, Fabien
Reviewed By: #bitcoin_abc, Fabien
Differential Revision: https://reviews.bitcoinabc.org/D11678