[avalanche] Add a ValidationState for Proof
Summary:
This reproduce the same patern we use to validate transactions and blocks.
It's a useful pattern, because we can test why the check failed exactly.
Test Plan:
ninja all check-avalanche
Reviewers: #bitcoin_abc, Fabien
Reviewed By: #bitcoin_abc, Fabien
Differential Revision: https://reviews.bitcoinabc.org/D6962