Exclusion Complete Binary Merkle Tree
A merkle tree based on Nervos Complete Binary Merkle Tree to support verifiing a leaf is not on a certain tree.
Example Usage
```rust
type StrKey = &'static str;
type StrLeaf = SimpleLeaf;
type StrRangeLeaf = SimpleRangeLeaf;
// A helper to compute root and build proof
type StrExCBMT = SimpleExclusionCBMT;
// Can be seen as a black list
let allleaves: Vec = vec!["b", "e", "g", "x"]
.intoiter()
.map(StrLeaf::newwithkey)
.collect();
let root = StrExCBMT::computeroot(&allleaves);
// The keys not in the black list
let excludedkeys = vec!["f", "y", "z", "a"];
let proof = StrExCBMT::buildproof(&allleaves, &excludedkeys).unwrap();
asserteq!(
proof
.rangeleaves()
.iter()
.map(|l| (*l.key(), *l.nextkey()))
.collect::>(),
vec![("e", "g"), ("x", "b")]
);
assert!(proof
.verifyexclusion(&root, &excludedkeys)
.isok());
```