Exponential Module

Currently I've created an `Exp` class. However, as @certik suggested, it might not be that necessary to create a class for `Exp`.
The only new addition was an explicit `diff` which can be incorporated in the current `diff` of `pow` itself as a special case.
My earlier view was that since we will be adding functions like `rewrite_as_exp` functions in trignometric classes it might be useful to have an `Exp` class but I guess as Aaron said on gitter, 
> it's better to special case E in one place (pow) than to special case exp everywhere in the code that tries to deal with pow objects 
However, more importantly, this is not correct. Consider e.g.:
```
>>> log(-S(3)/4)
-log(4) + log(3) + ⅈ⋅π
>>> log(-I*S(3)/4)
                   ⅈ⋅π
-log(4) + log(3) - ───
                    2 
```
We really have to implement #47. So in the meantime, just raise an exception "not implemented" if the imaginary unit I should be returned. That way everything is prepared and correct, just not implemented. We should never return invalid answer.