Convert &&= and ||= to use scoped rather than scope-less BlockStmts to preserve logical abstraction
Merge pull request #796 from noakesmichael/assignOp

Alter the "parsers" representation of &&= and ||= to fix a --baseline regression.

The "parser" represents the &&= and ||= compound assignment operators using a temporary variable
and a nested function that references that variable; the whole thing is wrapped in a scopeless BlockStmt.
Certain transformations can then occur which separate the "nested" function from the scope in which
the outer variable is defined.  This goes unnoticed in the few cases that we use these operators and
with sufficient optimizations.

Convert the outer BlockStmt to a scoped BlockStmt to ensure the scope is not broken.


Compiled: STD clang on Darwin, STD/LLVM gcc on linux

Tests: Fixes the --baseline regression for this operator (trivial/deitz/test_assignop.chpl) and passes paratest

Review: None