Commutative boolean operations

As you can see, unordered types makes those functions very easy to
implement.