Implemented risch_integrate for trigonometric, inverse trigonometric and hyperbolic functions

Earlier:

        risch_integrate(sin(x),x)
        NotImplementedError

Now:

        risch_integrate(sin(x),x)
        -cos(x)
        integrate(sin(x),x,risch=True)
        -cos(x)

Added flag "rewrite_complex" to prevent calculation of every integral in terms of complex numbers (as we can get better results from other algorithms).
Conversions of trigonometric , inverse trigno , hyperbolic is implemented a s a fall back measure(if no algorithm gives anti-derivative then all the above functions would be converted into exponential or logarithmic components)

changed self.f.rewrite -> self.newf.rewrite
Merge pull request #1917 from cheatiiit/risch

Implemented risch_integrate for trigonometric, inverse trigonometric and hyperbolic functions
fix Sum and Product _eval_subs
3785: rework multiplicity and handling in log
Skeleton for elliptic integrals
major rewrite of pull #1408:

    * change names
    * docstrings
    * some documentation
    * mpmath translations
    * eval(), fdiff(), some rewrite methods
Added tests for elliptic integrals
Some support for latex printing of elliptic integrals
Add tests for elliptic integrals in test_args.py
Add complete elliptic integrals to the table for hyperexpand()
MatrixExprs use real/integer/complex assumptions
move test_closed_group from sets to __init__
add Q.real/integer/complex_elements predicates
remove whitespace
MatrixElement Q.real/integer/complex
matrix element types for Ident, Zero, DFT
3562: Replace Method for MutableMatrix
Code quality improved
Support for map argument added
Test added for map. Code Now compliant with PEP8