text: Title: Can't simulate a repeated `CircuitOperation` that contains a `repeat_until` `CircuitOperation`
  Body: **Description of the issue**
  Repetitively checking the syndromes of a prepared state before using it to measure stabilizers is an [important primitive for fault tolerance](https://courses.cs.washington.edu/courses/cse599d/06wi/lecturenotes19.pdf). True fault tolerance requires that this procedure happen multiple times. 
  
  For a minimum reproducible example, measuring a qubit until it's `|0>` and then applying an `X` gate to it multiple times will throw a  ` raise ValueError('Infinite loop: condition is not modified in subcircuit.')`
  
  **How to reproduce the issue**
  
  ```python
  import cirq
  import sympy
  
  sim = cirq.Simulator()
  q = cirq.LineQubit(0)
  inner_loop = cirq.CircuitOperation(
      cirq.FrozenCircuit(cirq.H(q), cirq.measure(q, key="inner_loop")),
      use_repetition_ids=False,
      repeat_until=cirq.SympyCondition(sympy.Eq(sympy.Symbol("inner_loop"), 0)),
  )
  outer_loop = cirq.Circuit(inner_loop, cirq.X(q), cirq.measure(q, key="outer_loop"))
  
  circuit = cirq.Circuit(cirq.CircuitOperation(cirq.FrozenCircuit(outer_loop), repetitions=2))
  print(circuit)
  result = sim.run(circuit, repetitions=1)
  print(result)
  
  ```
  Will print
  
  `ValueError: Infinite loop: condition is not modified in subcircuit.`
  
  
  
  The alternative is to run the `CircuitOperation` twice, but this breaks the printing of the result but this will throw
  `ValueError: Cannot extract 2D measurements for repeated keys`
  
  ```python
  import cirq
  import sympy
  
  sim = cirq.Simulator()
  q = cirq.LineQubit(0)
  inner_loop = cirq.CircuitOperation(
      cirq.FrozenCircuit(cirq.H(q), cirq.measure(q, key="inner_loop0")),
      use_repetition_ids=False,
      repeat_until=cirq.SympyCondition(sympy.Eq(sympy.Symbol("inner_loop0"), 0)),
  )
  inner_loop1 = cirq.CircuitOperation(
      cirq.FrozenCircuit(cirq.H(q), cirq.measure(q, key="inner_loop1")),
      use_repetition_ids=False,
      repeat_until=cirq.SympyCondition(sympy.Eq(sympy.Symbol("inner_loop1"), 0)),
  )
  
  
  outer_loop = cirq.Circuit(inner_loop, cirq.X(q), cirq.measure(q, key="outer_loop"))
  outer_loop1 = cirq.Circuit(inner_loop1, cirq.X(q), cirq.measure(q, key="outer_loop1"))
  
  circuit = cirq.Circuit(outer_loop, outer_loop1)
  print(circuit)
  result = sim.run(circuit, repetitions=1)
  print(result)
  ```
  
  **Cirq version**
  `1.4.0.dev20240126200039`
  
  