Introduce a new BlockStmt::blockTag, BLOCK_C_FOR_LOOP, to distinguish BlockStmts used in the init/test/incr clauses of a CForLoop
Add verify() extensions for While/For loops
Update CollapseBlocks on ForLoop and CForLoop to remove the extra check on the blockInfo
Add the BLOCK_C_FOR_LOOP blockTag when a CForLoop is being constructed.  Update the verify() method to check for this tag
Update expandRecursiveIteratorInline to construct a BlockStmt from the body of a ForLoop rather than using a degenerate ForLoop
Add a convenience version of copyBody() that does not take a map
Update inlineSingleYieldIterator to replace a ForLoop with a well-formed BlockStmt
Merge pull request #885 from noakesmichael/iter-3

Continue to cleanup ForLoop and CForLoop

1) Added verify methods to While/For loops to ensure that these rely on the underlying BlockStmt in the
expected way

2) Added code to lowerIterators to construct new BlockStmts rather than converting a ForLoop to a degenerate ForLoop by removing the blockInfo.

3) CForLoops currently rely on BlockStmt as part of the implementation of the init/test/incr clauses.
Unfortunately this has an unintended interaction with deadExpressionElimination; these clauses
often appear to include dead "Statement Expressions".  Add a new blockTag, BLOCK_C_FOR_LOOP
and ensure this tag is applied when CForLoops are being constructed.

Compiled: STD clang/darwin, STD gcc/linux64, LLVM gcc/linux64
Tested: paratest --verify
Reviewed: None but discussed the deadExpressionElimination with Elliot at some length