all core __lt__ should go through Expr.__lt__
experiement: try a bit of simplifying in expr.__lt__, NO MERGE

This gets us past core/test_assumptions.py.

I'm not convinced its a good idea to simplify.  If we do, might
have to make another pass through all the special cases that came
before `Expr.__lt__`