Make the avalanche processor a unique ptr managed by the node context. Pass it via a reference to most of the code (net, net_processing, mining, RPC, ...), and via a raw pointer to the validation/chainstate code so that it remains an optional component and does not add more avalanche processor dependencies to bitcoin-chainstate.
The `Chainstate` code will have access to the avalanche processor shortly after the chainstate is loaded, but not immediately (this preserves the previous behavior). A change in behavior introduced by this diff is that now only the active chainstate will use avalanche, not the background IBD chainstate in case a assumeutxo snapshot is loaded. I don't avalanche will ever be needed for background IBD, we can probabably assume that all blocks leading up to the snapshot base are already final.
The only real complex change here is in processor_tests, because that test builds a fixture that has a processor, but some of the subtests then redeclare that processor (so it is affected by changes in ArgsManager, and it affects the `m_node.peermanager` component).
Depends on D16223