The `Drop` constructor has type `(Bytes, Int) => BitVector`. That is, we have the invariant that inside of a `Drop` is always just a flat vector, not just another tree, which is useful for reasoning about. 

Unfortunately, because `Bytes` is a smart constructor, we can't just do `case b@(Bytes,m) => m`. Might be nice to avoid an extra copy here. You could do it with an `asInstanceOf[Bytes]`...