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 
You can perhaps make the above 4 lines shorter, e.g. something like:
```
RCP<const Integer> num, den;
get_num_den(rcp_static_cast<const Rational>(arg), outArg(num), outArg(den));
```