Plug the orphan proofs pool into PeerManager and start using it to store proofs with missing utxos or wrong UTXOs that could potentially become good in case of a reorg.
Re-check all proofs at each chaintip change, create a new peer for proofs that have become good, remove them from the orphan pool.
Regarding the choice of setting the pool capacity to 10000 stakes, I ran a benchmark and found that I can verify 10000 single-stake proofs in 0.39s. It seems reasonable to keep this number below 1 second if we want to check all the proofs at each tip change.
Unit tests are included. What is notably missing from these tests is to check that proofs that are no longer orphans have actually become valid Peers. For this test, an additionnal API would be necessary to probe for the existence a Peer without creating it in the process (`getPeerId(proof)` creates a peer if it does not already exist). This can be done later, when it is actually needed to get proofs out of the peer manager to relay them to peers.