Refactor processing of inequalities with oo

fixes #7775
fixes #7798
fixes #7841

this patch replaces #7800 and #7799
I see. deltaintegrate is working the same. The issue comes up when substituting the limits. 

```
In [8]: y*Heaviside(x - y).subs(x, -oo)
Out[8]: y⋅Heaviside(-y - ∞)

In [9]: y*Heaviside(x - y).limit(x, -oo)
Out[9]: 0
```

I thought we fixed `_eval_interval` to use limit, though.