verilog: Reorganize context related code into functions

Also fixes context string generation.
verilog: Simplify main parser

Parser was skipping to known start/end-of-statement characters before
starting to find tags. When using named blocks, something like the
following can happen:

initial begin : myblock
  reg  var;

If the parser waits for ; to start searching for a new tag, then "var"
is missed.
verilog: Implement support for named begin..end blocks