flow: keep going as long as the value changes

Previously it would track via a boolean that was flipped when an expression
successfully evaluated. This was conflating 'successful evaluation' with
'value has changed'. Reference nodes successfully evaluate to themselves when
referring to another yet-to-be-evalutaed expression, which could lead to an
infinite loop here.