Brought back much of the semantics from the 'Syntax' data type which I recently deleted, this time making it a part of the 'Dao.NewParser.Parser' data type, and taking care to avoid the mistakes I made last time. In particular, when computing branch tables, I am much more conservative in predicting whether or not a branch will loop. I only try to catch the most obvious infinite loops, as of course it is generally impossible to catch every infinite loop as, we know from the Church-Turing thesis. I have to say, though, I was a bit surprised to run into this undecidability problem. I have also added a simple pretty printer for debugging the parser.