go: Drop use of setjmp()/longjmp()

This makes the code more straightforward to read and simplifies
resources management.
go: Don't abort on invalid input

This makes the parser more forgiving about malformed input, and prevent
abortion of the whole CTags process if an invalid Go file is found
among the files to process.
go: Fix handling of the less-than operator (`<`)
Use only characters valid for go identifiers
Keep backslash in string if not followed by ' or "
Remove unused TOKEN_CHARACTER
Return correct token for semicolon

Semicolons aren't mandatory but can be used and separate multiple
statements on a single line.
Stricter parsing of identifiers

Detect that first character isn't digit, introduce TOKEN_OTHER for tokens
not relevant for simple ctags Go parsing and use it where needed.
Parse single line var or const definitions correctly

The skipToTopLevelSemicolon() would end only after finding ";". However
there could be the ending ")" before which would be skipped in this case.
Make sure ")" correctly ends the var, const definition block.

Also add clarification comment about skipping multiple return values
of a function in skipType().
Skip matching braces at top level

Make sure the parser skips the contents between matching braces at top
level; otherwise something from unparsed blocks (e.g. import) could be
treated as a keyword and confuse the parser.
Don't generate tag on invalid input for var, const, type
Add the go-torture unit test