fixed various memory leaks/overruns/etc

I found many issues using AddressSanitizer and LeakSanitizer.
diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index ca9c3c7..77d5781 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -28,8 +28,8 @@
  public:
   class LimitedDrivetrainLoop : public StateFeedbackLoop<4, 2, 2> {
    public:
-    LimitedDrivetrainLoop(const StateFeedbackLoop<4, 2, 2> &loop)
-        : StateFeedbackLoop<4, 2, 2>(loop),
+    LimitedDrivetrainLoop(StateFeedbackLoop<4, 2, 2> &&loop)
+        : StateFeedbackLoop<4, 2, 2>(::std::move(loop)),
         U_Poly_((Eigen::Matrix<double, 4, 2>() << 1, 0,
                  -1, 0,
                  0, 1,