A fix to address issue 26

The patch is to resolve issue 26, where Souper enters an infinite recursion when processing irreducible CFGs. The idea is that when we build an instruction, if the instruction is a phi-node with multiple incoming edges, we do DFS from the basic block containing the phi-node and check if we will revisit the basic block. If yes, we know that this phi-node is the merge point of loop iterations. All basic blocks along the path of the detected loop are cached for speeding up future queries. 
Will this ever cache anything other than BB?

I'm sorry for not mentioning this earlier, but I am also uncomfortable with this caching in general. It feels like premature optimization to me, as irreducible loops should not be appearing very often. Perhaps the thing that would be more useful to cache is whether a given block is *not* in a loop, but if you've had success with the current code I'd be inclined to remove the caching altogether.