Refactor processing of inequalities with oo

fixes #7775
fixes #7798
fixes #7841

this patch replaces #7800 and #7799
safer re: #7951 to use `other.__le__(self)` b/c we want to call the `Infinity` method.  But note, I don't have a specific failure, just in principle.