Add global var parsing
Add procdecl parsing, use undo stack for non-destructive parsing
Fix UDT type emitting
Emit source filename/linenumber on TODOs
Handle EOLs in cToplevel(), preserve them in untranslated constructs

(it's nicer to preserve EOLs in untranslated constructs, otherwise we
wouldn't need to bother preserving the tokens of untranslated constructs
in the first place)
Remove pass*() functions again
Fix procptr emitting
Add TK_DIVIDER to handle empty lines
Support '\' escaped newlines in // comments
Count newlines in comments too
Fix CRLF -> TK_EOL lexing
Re-add TK_SPACE to allow it to be preserved in unknown constructs
Add TK_BEGIN/END, TK_NOP, unknown PP directive handling, ';' parsing
Handling nested TK_BEGIN/END blocks in parser
Make ONETOKEN private to tk.bas again (left-over from pass*() experiment)
Remove FB keyword tokens, unused since emitting is done differently
Re-add two-pass parsing for better handling of unknown constructs

- 1st pass marks tokens in unknown constructs as "poisoned"
- 2nd pass looks out for poisoned tokens, and turns them into TODOs,
  and merges anything else into the proper high-level tokens

This is again similar to the "marking" done by the old fbfrog parser,
except that only a "poisoned" boolean is used now to mark bad tokens,
and more complex marks aren't needed since both passes now use the same
code, and there is no duplication anymore.

This allows the 2nd parsing pass to insert/delete tokens as it's parsing,
because it can assume that the construct will turn out to be correct,
otherwise the 1st pass would have marked it as poisoned. This is especially
nice for parsing function declarations, because the parameters can be
translated one by one with no worry about having to revert everything if
there is a parsing error during the last parameter or similar.