flatten and separate

Add utility routine for compiler to flatten and separate QGL sequences
containing control flow statements.

Also, change qif (with else) to put the branch (the tuple) inside a sequence.
So, now qif(N, A, B) returns something like:
[CMP == N, GOTO(A), (B, [A GOTO(end of B)])]