Small changes for integration of Abs

- rewritten as Abs as Heaviside
- rewritten as Heavisides as sign
- integrals with simple heaviside terms
- added ExprCondPair.is_polynomial
Can you add some comments to this function to make it easier to follow. I think a comment here

```py
# f = Heaviside(m*x+b)*g
```

would make things a lot clearer.