Introduce virtual overrides for blockInfoGet/Set and the method paramInfoGet
Introduce functions is/toParamForLoop(BaseAST* a) and virtual method isParamForLoop()
Add virtual methods getFirstExpr/getNextExpr and add a guard to catch any unexpected uses of ParamForLoop::blockInfoGet
Add virtual methods for codegen (flag an error if invoked) and verify
Add support for AstVisitor
Merge pull request #990 from noakesmichael/param-for-loop-1

ParamForLoop: Flesh out the implementation

Begin to separate ParamForLoop from BlockStmt; for example introduce paramInfoGet/Set to serve the role currently played by BlockStmt::blockInfoGet/Set and override the latter virtual methods with implementations
that print a warning message if the abstraction is being violated.

Add the core set of utility operations e.g. isParamForLoop(), toParamForLoop(), getFirstExpr/getNextExpr,
and support for AstVisitor.

Compiled STD clang/darwin, STD gcc/linux64, LLVM gcc/linux64
Tested: paratest --verify
Review: none


local implementations of the virtual methods blockInfoGet/Set that generate warning messages if they are invoked so that we can