support for parsing and printing split queries
Merge pull request #72 from regehr/split

support for parsing and printing split queries
A fix to issue 26

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.
added a test related to issue 26

This test caused the infinite recursion behavior described in issue 26
Fixed a problem for sub-loops

When we do dfs from a phi, it's possible that we will encounter
other loops that not start from the phi we started with.
add some tests
Fixed a test
Looks work now

* Fixed a stupid DFS issue
* caching subloops, which may result in better performance
correct-ize the caching logic
added a couple of comments