An initial definition of the CollapseBlocks visitor
Update FnSymbol::collapseBlocks to use the new visitor
Drop the obsolete collapseBlock methods
Delete trailing whitespace for this merge
Merge pull request #825 from noakesmichael/collapse-blocks

Implement collapse blocks as a Visitor

There is an optimization that is intended to collapse nested sequences of BlockStmts once name resolution has
been completed.  The implementation was bottom up from AST nodes towards the function roots and leveraged the ability to detect expressions that had special positions within Loops and thence on block-info clauses.

IMO the previous implementation was also a little opaque.

Converted this to a tree traversal based on AST Visitor.  Elliot and I had a friendly debate on the
pros/cons of fashioning this as a Visitor vs. adding virtual methods to the AST nodes as well as
some discussion of implementation details of Visitor.

In some ways we regard this implementation as a simple "experiment" in coding style.
It will be easy to convert to alternative styles if this style fails to gain favor.


Compiled: STD clang/darwin, STD gcc/linux64, LLVM gcc/linux64
Tested: Paratest suite STD and LLVM
Reviewed: Elliot