This PR contains some general cleaning up, but most significantly:
The code is now general for any rewriting semantics, not just DPO
We update a representable clock if the number of parts has changed, rather than requiring that the update partial map be an isomorphism (which is a finer-grained condition: they come apart when you delete something and then add it back).
This PR contains some general cleaning up, but most significantly: