Diff finds data changes, not just keys

This is done by adding a new hash field that is the composite of the
keys and the values hashed again. This allows a fixed tree organization
based on the keys, but a comparison doable (even through leaf and inner
nodes) based on the content of the leaf nodes.