Adjustments to deadCodeElimination()
Convert the driver loop so that we can step over exprs[] and marks[]
Split the inner loop in to two loops; one to manage the exprMap and the other to extend the isEsssential flag
Conditionalize the isEssential loop so that it is not run if the mark[] is already set
Rely on the BasicBlock marks[] for Loop conditions and CondStmt conditionals
Cleanup
Merge pull request #908 from noakesmichael/bb-3

Adjust the inner loop for deadCodeElimination to leverage the marks[] array being set up
during the construction of Basic Blocks.  In particular this inner loop is released from the
complication of attempting to determine the context for each lower-level expression.

Compiled: STD clang/darwin, STD gcc/linux64, LLVM gcc/linux64
Tested: paratest --verify
Review: None