This is to FirstOrderFunction, what AutoDiffCostFunction is to CostFunction.
This allows users of GradientSolver to be able to define objective functions
without requiring them to define the derivatives.
The implementation uses the same Jet objects for computing the gradient as
is used by AutoDiffCostFunction.
Change-Id: Ide6e60532a3adab9be9899ba9b368dc267fd2dbb