Reorganizing the way the digest is computed, and the API to hopefully suit it.
* the gist is that every commit() to a writestream will update the digest in the KeyMetadata
* this KeyMetadata will then be xor'd(!) with the previous update, and passed on to the DigestTree...
* who (commit yet to happen) will xor the update with whatever he has.