#16 adds commutation for patches sharing a common array ancestor, or in the same array. It doesn't support objects yet. Need to add that.