[avalanche] Create a generic vote map that can have any kind of item being voted on
Summary:
For now the vote maps are typed, there is one for blocks and one for proofs.
This diff creates a new structure that maps a std::variant so that any kind of type can be added to it. It will be used to factorized and simplify the code when we add transactions to the polls.
This structure is currently unused outside of its unit test.
Test Plan:
ninja check-avalanche
Reviewers: #bitcoin_abc, PiRK, sdulfari
Reviewed By: #bitcoin_abc, PiRK, sdulfari
Subscribers: PiRK
Differential Revision: https://reviews.bitcoinabc.org/D12980