Rework tracking of variables in scope while resynthesizing expressions.
Rework tracking of variables in scope while resynthesizing expressions.

The new formulation allows easy popping of variables when leaving
nested scopes.  This should make it easier to support "for" collection
elements that declare variables.

Change-Id: Ie1dbb11c50677936973acef804b2496a0d00a84a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97172
Reviewed-by: Konstantin Shcheglov <09e4d7516628963212bf4aace2f97603d2b706e4@google.com>
Commit-Queue: Paul Berry <72d414e3a99fb120308437779d51667bcc0984eb@google.com>

dart-lang/sdk,dartino/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-lang/sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dart-lang/sdk,dart-lang/sdk,dart-archive/dart-sdk,dart-lang/sdk,dartino/dart-sdk,dart-lang/sdk,dart-lang/sdk,dartino/dart-sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-lang/sdk