Update swerve drivetrain position messages & logic

This makes it so that the swerve drivetrain positions are sent in two
separate position messages (for FPGA-based and CAN-based positions),
using message definitions from the frc971/ folder.

Also refactors the SwerveModule class/usage a bit.

Removes the follower wheels from the y2024_swerve code.

Change-Id: I36898c3337b5a1437ce0c2a0189fd317929f1986
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/y2024_swerve/swerve_publisher_lib.h b/y2024_swerve/swerve_publisher_lib.h
index 1a07865..e577455 100644
--- a/y2024_swerve/swerve_publisher_lib.h
+++ b/y2024_swerve/swerve_publisher_lib.h
@@ -12,16 +12,13 @@
 
 namespace y2024_swerve {
 
-namespace drivetrain = frc971::control_loops::drivetrain;
-
 class SwervePublisher {
  public:
   SwervePublisher(aos::EventLoop *event_loop, aos::ExitHandle *exit_handle,
                   const std::string &filename, double duration);
 
  private:
-  aos::Sender<frc971::control_loops::drivetrain::swerve::Output>
-      drivetrain_output_sender_;
+  aos::Sender<frc971::control_loops::swerve::Output> drivetrain_output_sender_;
 };
 
 }  // namespace y2024_swerve