Replacement for @raoulb pr#914

See #914

ToDo:
- [x] tests
- [x] final rebase
On Fri, Jul 18, 2014 at 05:31:29PM -0700, raoulb wrote:
>    In sympy/functions/elementary/trigonometric.py:
> 
>  >
>  > -    * asin(x) will evaluate automatically in the cases
>  > -      oo, -oo, 0, 1, -1
>  > +    def _call_reciprocal(self, method_name, *args, **kwargs):
>  > +        # Calls method_name on _reciprocal_of
>  > +        o = self._reciprocal_of(self.args[0])
>  > +        if kwargs:
>  > +            return getattr(o, method_name)(**kwargs)
>  > +        else:
>  > +            return getattr(o, method_name)(*args)
> 
>    Why this distinction? Is it really necessary?

Not sure.  This was added in #2551 (with bad math in fdiff).  Sorry.

I'll try to cleanup this method.