make CacheCoherentHash set the value internally too

And return a normal hash on dup, effectively decoupling the duplicate
from the specification at all. Previously it was returning another
CacheCoherentHash, but without @spec set, breaking on use.