Fixed Interval._eval_imageset

Interval._eval_imageset was not working well the give function was not
monotonic. Now it is evaluated by finding out the maxima, and minima of
the function by solving the derivative of the function in the given
interval.
Implemented method to find infinite discontinuties
_eval_imageset: handle infinite discontinuties
Handle unsupported functions in calculus.infinite_discontinuities
singularities: better handle unsupported arguments
singularities: improved _has_only_supported_func
singularities: fixed infinite_discontinuties
_eval_imageset: handle functions with symbolic coefficients
singularities: make it handle only rationals functions
_eval_imageset: handle cases where f(start) doesn't exist
added test for Python lambda in imageset
Cache singularity calculation