NaN inequalities should raise TypeError

See PR #7776 for discussion.

 - [x] NumberSymbol needs special case.
 - [x] `oo` needs special case.
 - [x] `Float` needs special case.
 - [x] 'Rational' works as is (as existing special case).
 - [x] lots of asymmetric results: IMHO we really do want *lots* of tests, not just spot tests, sorry @smichr!
 - [x] All of this is for the binary ops, `Lt` is not tackled, that is pr #7783.
 - [x] clean up tests, test comments
 - [x] couple FIXME's: one remains but its documented and I left it as question in the code
 - [x] rebase, squash
 - [x] proper commit msg
is this ok to do?  prefer define it and just call `Expr.__le__`?