Splitted 'compile' into 'parse' and 'merge'

'merge' bein the first of a few optimization phases I plan to introduce.
Made 'parse' a bit prettier

Instead of carrying an explicit stack of programs around, let the 'go'
function recurse. This merely requires tweaking the input program a bit
so that it terminates with a ']'. That way, we can treat parsing a
toplevel program the same as parsing a loop body -- both is terminated
by a ']'.