[flang][parser] handle semicolons uniformly in program unit constructs (#181180)
Modifies the parser so that a semicolon is a valid separator between
programming unit statements, and tweaks how leading semicolons and
spaces are parsed so that they don't count for progress toward
programming unit parsing.
Also adds some tests that document the behavior of what works before and
after the update.
fixes [#176994](https://github.com/llvm/llvm-project/issues/176994)