Add Merkle proofs to the protocol
This MR adds Merkle proofs to the protocol. This exposes 4 new functions: {produce,verify}_{proof,stream}
to produce and verify Merkle proofs with the current Tezos context.
This is a follow-up from !4138 (merged) which was introducing proofs in the shell.
A follow-up MR will address #2362 (closed).
Edited by Thomas Gazagnaire