Added base HyperbolicFunction class. Updated API.

The `Sinh` class has also been added along with the function
definitions.
Added `expand_as_exp` in `HyperbolicFunction`. Tests for `Sinh`

The `expand_as_exp` cannot be called in a very simplistic manner.
Might need to refactor it for a better alternative.
Refactored usage of `expand_as_exp`

* Removed `expand_as_exp` from HyperbolicFunction
* Added `expand_as_exp` to Basic
* New usage: rcp_static_cast<const Sinh>(r)->expand_as_exp()
Refactored tests for `expand_as_exp`

Now since we have added `expand_as_exp` in `Basic` we can directly
call the function instead of casting it.
Added `Cosh`. Added tests.

Following changes were added:
* Basic API for Cosh
* all methods for Cosh
* tests for Cosh
* diff for sinh (which depended on cosh)
Added `Tanh` class. Added tests.

* Update sinh and cosh to now convert negative symbolic expr
to positive expr.
* Added basic api for tanh
* Added tests for tanh
Added Coth class. Added tests.

* Found a bug mul(im1, sub(im1, x)) != add(i1, x)
* Added API for `Coth` class. Found a bug in SymPy coth.
* Added tests.
* TODO: fill issues corresponding to bugs.
Added class `ASinh`. Added tests.
Added `ACosh` class. Added tests.

The `acosh` function depends on the complex module for further
simplifications. There are very few simplifications without it.
Added `ATanh` class. Added tests.
Added `ACoth` class. Added tests.
Merge pull request #203 from sushant-hiray/hyperbolic

Added Hyperbolic Module. Merged #203