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


On Thu, 11 Sep 2014, Aaron Meurer wrote:

>> @@ -471,6 +471,11 @@ def _eval_rewrite_as_Piecewise(self, arg):
>>          if arg.is_real:
>>              return Piecewise((arg, arg >= 0), (-arg, True))
>>
>> +    def _eval_rewrite_as_sign(self, arg):
>> +        # Note this only holds for real arg?
>> +        if arg.is_real:
>> +            return arg*C.sign(arg)
>
> How is our complex `sign` defined?
>

Sign of a complex number returns a complex number of magnitude 1.  I think
the reasoning was ```abs(arg)*sign(arg) == arg```?  I guess in this case, we can 
do  ```arg/C.sign(arg)``` for all complex numbers?