Convert scopeless BlockStmt to scoped to fix several --baseline regressions to pass
The change to ForLoop exposed an issue with some cryptic code that quietly drops the last statement in a Zip4 block.  We're not sure why this was done, prior to 2008, but it does not seem to be appropriate today
Merge pull request #707 from noakesmichael/loopScoped

Convert For/While loop statements to be wrapped in a scoped BlockStmt

1) Update the build routines for ForLoop, WhileDoStmt, and DoWhileStmt to
make the outermost BlockStmt be scoped rather than scopeless.  This addresses
a regression for --baseline.

2) This change exposed a long standing curiosity with buildZip4 in AST/iterators.cpp.
That code had test that would cause the function to drop the last statement from the
body of the zip4 function.  This has been true for years and it's not clear why.  In
practice this is usually dropping a call to autoDestroy but every once in a while it's
dropping a "real operation".  Some aspect of the first commit caused a particular
move to be dropped that surfaced as 2 regressions.

Including the final statement "makes sense" and does not appear to introduce any new
regressions.

Compiled STD darwin/clang, STD linux/gcc, LLVM linux/gcc
Tested: full paratest   std --verify  std --baseline --inline
Reviewed: Discussed at length with Elliot