Refactor handling of dual intaking

* Add flag to goal message to explicitly indicate which intake we are
  requesting, rather than attempting to infer it from the exact settings
  of the intake roller speeds.
* While idle, latch the turret to one of the two intaking locations,
  chosen based on whichever intake was either last requested or which
  intake currently has a ball (if only one has a ball).
* Clean up some of the logic to operate the front/back intakes
  independently since we actually have separate transfer rollers for them.

Change-Id: Ib97052a011fe01784077a7b66fccbcc02aa49952
Signed-off-by: James Kuszmaul <jabukuszmaul@gmail.com>
diff --git a/y2022/control_loops/superstructure/superstructure_status.fbs b/y2022/control_loops/superstructure/superstructure_status.fbs
index d802f08..92f3dbd 100644
--- a/y2022/control_loops/superstructure/superstructure_status.fbs
+++ b/y2022/control_loops/superstructure/superstructure_status.fbs
@@ -48,6 +48,9 @@
   state:SuperstructureState (id: 10);
   // Intaking state
   intake_state:IntakeState (id: 11);
+  // Whether the front/rear intakes currently are holding balls.
+  front_intake_has_ball:bool (id: 18);
+  back_intake_has_ball:bool (id: 19);
   // Whether the flippers are open for shooting
   flippers_open:bool (id: 12);
   // Whether the flippers failed to open and we are retrying