In this commit:
* TreeHasher is replaced by the Hashable trait. Hashable is
modified to use level information in the construction of
the hash, and a convenience method is provided for obtaining
the empty node at a given level.
* The pop_checkpoint method is removed from the `Tree` interface.
Instead, a maximum number of checkpoints is established at tree
construction time and then the oldest checkpoints are automatically
dropped when adding new checkpoints once that number is reached.
* The `witness` method implementation in the sample tree
is modified to ignore duplicate calls.
* Property testing functiona are modified to abstract over
the type of hashable data.