Improve Tuple's opCmp

Fixes:
* It is not actually legal to call a user defined type's opEqual when testing inequality
* Improves: Implementing opCmp in terms of "<" is very ineficient. So we call opCmp directly.