Topic/commutativity

These are some commits addressing commutativity (via CMonoid and CRing) as well as some other ad-hoc clean up.