Correctly handle corrupted encoder readings in localizer

Also, tune down image corrections and remap channels in replay.

This does not fix the yaw issues.

Change-Id: I8587148db1bd03d12210f951306cca3e30a2cb84
Signed-off-by: James Kuszmaul <jabukuszmaul@gmail.com>
diff --git a/y2022/localizer/localizer.h b/y2022/localizer/localizer.h
index be14b45..f2cb50e 100644
--- a/y2022/localizer/localizer.h
+++ b/y2022/localizer/localizer.h
@@ -110,7 +110,8 @@
       const control_loops::drivetrain::DrivetrainConfig<double> &dt_config);
   void HandleImu(aos::monotonic_clock::time_point t,
                  const Eigen::Vector3d &gyro, const Eigen::Vector3d &accel,
-                 const Eigen::Vector2d encoders, const Eigen::Vector2d voltage);
+                 const std::optional<Eigen::Vector2d> encoders,
+                 const Eigen::Vector2d voltage);
   void HandleTurret(aos::monotonic_clock::time_point sample_time,
                     double turret_position, double turret_velocity);
   void HandleImageMatch(aos::monotonic_clock::time_point sample_time,