Convert getFirstExpr(Expr* expr) to virtual Expr* getFirstExpr() so that new Loop ASTs can be handled more cleanly
Merge pull request #918 from noakesmichael/firstExpr

Convert getFirstExpr(Expr* expr) to virtual Expr* getFirstExpr()

This will simplify separating While/For from BlockStmt and adding new ASTs in the future

Compiled: STD clang/darwin, STD gcc/linux64, LLVM gcc/linux64
Tested: paratest -verify
Review: None
Convert inner loop of function getNextExpr() to leverage a virtual method that is also named getNextExpr()
Merge pull request #919 from noakesmichael/expr-1

The function getNextExpr(Expr*) has two phases; the first phase handles the simple "follow the current chain"
logic and the second phase performs a type dispatch to determine the next object to traverse.  Converted the
second phase in to a virtual method dispatch to simplify the separation of the logic for While/For from Block.

Compiled STD clang/darwin, STD gcc/linux64, LLVM gcc/linux64
Tested: paratest
Review: None
Update syncPerfGraphs to include line feeds in final log lines.

Also, use context manager to ensure logfile is closed (instead of manually
calling .close() and potentially accidentally leaking a file handler).
Add one more line feed to syncPerfGraph logging.

Ensure that rsync stderr stream is also piped into the logfile.
Cleanup getFirstExpr/getNextExpr and extend virtual methods to cover While/For loops
Merge pull request #920 from thomasvandoren/whitespace-in-sync-perf

Update syncPerfGraphs to include line feeds in final log lines.

Also, use context manager to ensure logfile is closed (instead of manually
calling .close() and potentially accidentally leaking a file handler), and ensure
that stderr from rsync call is included in logfile.
Adding a ref var future where initializing a ref var with a casted
variable results in an internal error during function resolution.
Merge pull request #921 from sungeunchoi/test

Adding a ref var future where initializing a ref var with a casted variable results in an internal error during function resolution.
Bug fix: rename isDoWhileLoop() to isDoWhileStmt()
Introduce the standard isFoo/toFoo functions for While/For loops
Update isSingleLoopIterator to detect For/While loops without reference to blockInfo
Convert uses of blockInfo for While Loops
Fix up virtual method override name mismatch
Update .good to match more detailed compiler error message
Remove dead code; BlockStmt handler superceded by For/While loop specific code
Fix trivial coverity warning
Update regressions for today
Merge pull request #922 from noakesmichael/cov-0

Fix trivial coverity warning

I recently touched bb.cpp and this caused Coverity to repeat a complaint about dead-code.
It took me a couple of looks to see the issue.  This is a loop over a std::vector<Expr*> and
the body tests whether the element is a NULL pointer or not; in practice this won't happen
for the vector in question but it must have seemed like a nice check when it was added.

However the macro for_vector() terminates early if it is finds a slot with NULL and so the
check is indeed dead-code.

I am not wholly convinced about this definition of for_vector but I think there may
be code that relies on this behavior.

Compiled: darwin/clang
Test: None; The change is trivial and the code is used to print the contents of BBs
Review: None