Made minimal maximal-sharing aspect more precise.
Correcting copy and paste error.
Towards separating concerns for object lifetime tracking and maximal sharing.
Added serialisation with protocol buffers and byte arrays.
Refactoring to function instead of method.

Therefore it's also possible to reuse this functionality for values that not inherit from AbstractValue.
Switching to hash function (instead of method).

Further postponing of dealing with some issues.
Supporting multi hash (sequential, slow).
Allow later setting of digest.
Clean up of code.