Pre-plan auto splines

(a) Make it so that the drivetrain automatically evicts old splines
(b) Set up auto to preplan splines at construction and after every auto.

Change-Id: I96ddb3a38947da02ad9ddc6fe933b7e85727dc18
diff --git a/frc971/autonomous/base_autonomous_actor.h b/frc971/autonomous/base_autonomous_actor.h
index 2478fda..92fc46c 100644
--- a/frc971/autonomous/base_autonomous_actor.h
+++ b/frc971/autonomous/base_autonomous_actor.h
@@ -43,15 +43,23 @@
     bool SplineDistanceRemaining(double distance);
     bool WaitForSplineDistanceRemaining(double distance);
 
+    // Returns [x, y, theta] position of the start.
+    const Eigen::Vector3d &starting_position() const { return spline_start_; }
+
    private:
     friend BaseAutonomousActor;
     SplineHandle(int32_t spline_handle,
-                 BaseAutonomousActor *base_autonomous_actor)
+                 BaseAutonomousActor *base_autonomous_actor,
+                 const Eigen::Vector3d &start)
         : spline_handle_(spline_handle),
-          base_autonomous_actor_(base_autonomous_actor) {}
+          base_autonomous_actor_(base_autonomous_actor),
+          spline_start_(start) {}
 
     int32_t spline_handle_;
     BaseAutonomousActor *base_autonomous_actor_;
+
+    // Starting [x, y, theta] position of the spline.
+    Eigen::Vector3d spline_start_;
   };
 
   // Represents the direction that we will drive along a spline.