* Remove useless T: AsRef<[u8]> constraint in Lemma.
* Introduce a custom `Hashable` trait instead of requiring `AsRef<[u8]>`.
Since not every type can implement `AsRef<[u8]>`,
this commit removes that constraint, and requires instead
that values implement the `Hashable` trait.
A default instance is provided for types that already implements `AsRef<[u8]>`.
* Update documentation.
* Add a Protobuf test with custom struct and Hashable impl.
* Separate the leafs hash domain from the internal nodes' one.
This change prevents an internal node from having the same hash as a leaf,
and thus from potentially ending up with two different trees with the same root hash.
Close#20
* Align with the CT spec, and allows building a tree from an empty dataset.
Fixes#20. Prepares #24.