A struct representing the constraint system for the Merkle tree. Like any M3 instance,
it is characterized by the tables with the column constraints, and the channels with
the flushing rules.
We need to implement tables for the different cases of Merkle path pulls based on aggregated
inclusion proofs. Which is, given a set of indexes to open, we may need to pull the left
child, the right child, or both. As a table must contain columns of the same height, we
need to implement three tables for the three cases.