MAINT: avoid redundant evaluation of user-provided function in l-bfgs-b optimization

closes https://github.com/scipy/scipy/issues/4076
Just to be clear, I'm -1 to adding `**kwargs` for the purpose of including `f0`, and I'm also -1 to adding `**kwargs` for the purpose of allowing user-supplied `**kwargs` to the user functions.  I'm also -1 to removing the `*args` but only because of backwards compatibility, otherwise I'd be +1.  So I agree with not changing the interface of `approx_fprime`.