Fixed a nontermating issue in the program evaluater.

I have rewritten GP's program grammar to circumvent a circular
dependency in the parser. The main change is that the "blocks"
in if/try statements are now required to be bracketed.

I also cleanly separated command sequences ([Command]) from commands and
written a wrapper function in RunProgram to evaluate a list of commands.