For reverse mode AD we use StableName to recover sharing information from
the tape to avoid combinatorial explosion, and thus run asymptotically faster
than it could without such sharing information, but the use of side-effects
contained herein is benign.

The jacobian' function calculates both the result and the Jacobian of a nonscalar-to-nonscalar function, using m invocations of reverse AD,
where m is the output dimensionality. Applying fmap snd to the result will recover the result of jacobian
| An alias for gradF'

jacobianWith g f' calculates both the result and the Jacobian of a nonscalar-to-nonscalar function f, using m invocations of reverse AD,
where m is the output dimensionality. Applying fmap snd to the result will recover the result of jacobianWith

Instead of returning the Jacobian matrix, the elements of the matrix are combined with the input using the g.