Added different derivative for heurisch: _eval_heurisch_diff

closes #7259, #4300
What if `f` doesn't have this method, but some of `f.args` - does?

btw, I think - this is a better place to keep all heurisch-specific derivatives, see https://github.com/sympy/sympy/issues/4300#issuecomment-36990522