Template jacobian.h on Scalar type

This makes it so that we can run numerical Jacobian calculations on
single-precision floats when we want to.

Change-Id: If45ea95366a772883872321c99c14acc8eec7eca
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/frc971/control_loops/jacobian_test.cc b/frc971/control_loops/jacobian_test.cc
index 5606004..92a15a3 100644
--- a/frc971/control_loops/jacobian_test.cc
+++ b/frc971/control_loops/jacobian_test.cc
@@ -19,17 +19,17 @@
 
 // Test that we can recover A from AxBufn pretty accurately.
 TEST(RungeKuttaTest, Ax) {
-  ::Eigen::Matrix<double, 4, 4> NewA =
-      NumericalJacobianX<4, 2>(AxBufn, ::Eigen::Matrix<double, 4, 1>::Zero(),
-                               ::Eigen::Matrix<double, 2, 1>::Zero());
+  ::Eigen::Matrix<double, 4, 4> NewA = NumericalJacobianX<4, 2, double>(
+      AxBufn, ::Eigen::Matrix<double, 4, 1>::Zero(),
+      ::Eigen::Matrix<double, 2, 1>::Zero());
   EXPECT_TRUE(NewA.isApprox(A));
 }
 
 // Test that we can recover B from AxBufn pretty accurately.
 TEST(RungeKuttaTest, Bu) {
-  ::Eigen::Matrix<double, 4, 2> NewB =
-      NumericalJacobianU<4, 2>(AxBufn, ::Eigen::Matrix<double, 4, 1>::Zero(),
-                               ::Eigen::Matrix<double, 2, 1>::Zero());
+  ::Eigen::Matrix<double, 4, 2> NewB = NumericalJacobianU<4, 2, double>(
+      AxBufn, ::Eigen::Matrix<double, 4, 1>::Zero(),
+      ::Eigen::Matrix<double, 2, 1>::Zero());
   EXPECT_TRUE(NewB.isApprox(B));
 }