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
refactor to pass command name separately from executable path (as found on PATH) to execProcess so that we may, one day, set argv[0] correctly
properly pass the command name as argv[0] when running external commands
Fixes issue 8 - tabs are actually part of <blank>

Note: We don't have a way for doctest to inject tab characters so I can't write tests for this.
parameter expansions with modifiers

new parameter modifier types
parsing and text conversion for parameter modifiers
expansion for some modifiers (all but %, %%, #, and ##)
factor out pathnameGlob into Pattern.hs
pattern matching in parameter substitution

doesn't handle literals in the pattern of the form  ${var#this'*'that}
proper handling of quoted pattern parts
handling of quoted parts in pathname (glob) expansion