Make Commutativity settings a case object

This gives us things like a cleaner toString and what-have-you for free