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
This entire branch can't happen, except for Heaviside(evaluate=False) I guess. Either way, can't you just return `Heaviside(b)*integrate(g, x)` unconditionally? Actually, even that is not necessary, because I believe the top-level `integrate()` will already pull out constant multiplicative factors, if I am not mistaken.