Address Peter's review feedback

* don't cache basic blocks in natural sub-loops
* rename dfs to a more meaningful name checkIrreducibleCFG
* rename isLoopHeader to isLoopEntryPoint to reflect the fact
  that this function handle both natural and irreducible loops