Added different derivative for heurisch: _eval_heurisch_diff

closes #7259, #4300
It looks like you reinvent chain rule here.  Why?  Why this interface should be different from fdiff one?