hash: rework documentation; move state packing logic from digest to hashes; hide implementation classes to avoid enormous error messages; improve general digest class