Introduce CForLoop by bulk cut/paste of ForLoop
Minor cleanup of ForLoop to remove essential CForLoop functionality
Redirect primitive WhileDoStmt to revised CForLoop
Update the Visitors to support CForLoop
Convert predictate isCforLoop to isCForLoop
Convert references to PRIM_BLOCK_* for FOR/WHILE into calls to the appropriate virtual methods
Merge pull request #866 from noakesmichael/CForLoop

Introduce CForLoop

The initial implementation is largely a cut/paste of ForLoop and hence is a thin veneer over BlockStmt.
There is currently some redundancy between BlockStmt, ForLoop, and CForLoop; there is currently
code that converts one kind of "BlockStmt" to another type by mutation.  This inconsistency will be
removed in the near term.

This patch also includes the updates to the current Visitors to support CForLoop.

Compiled STD clang/darwin, STD gcc/linux64, LLVM gcc/linux64
Tested: STD paratest
Review: None