cleanup prior to if/while/until

the parsed types were named after fragments of the grammar - now they are named after the total constructs they represent
the IfConditional's structure wasn't the right shape to represent a full if-then-elif-then-else construct.
parsing if, while, & until

fixed parse of term, refactoring with list
fixed parse of compound_list which missed optional leading newline_list
factored out do_group, which is a non-terminal in the grammar
improved pretty printing of for, if, while, and until constructs
execution of if and while and until