Overhaul gfx command target/source image parameter parsing/handling

(closes #715)

This cleans up parser-quirk-gfx's target/source image parsing and
the associated AST build up there and in rtl-gfx.
Clean up various rtl-gfx definitions to use proper default args
parser: Remove the now unused FB_VAREXPROPT_ALLOWADDROF
parser: Remove unnecessary fbSetIsExpression() around cExpression()

(cExpression() already does that)
debugging: Let typeDump() show UDT's namespace
debugging: Let symbDump() use typeDump() so UDT namespaces are shown
debugging: Remove unnecessary abs() in typeDump()
astBuildBranch(): Remove unnecessary subtype check

We know dtype=FB_DATATYPE_STRUCT, so the subtype will always be <> NULL.
parser: Update statement count after end-of-statement, not earlier

This fixes up some error reporting issues, where the "expected EOL" error
could be shown despite another error having been shown for the same
statement already. Normally the error module tries to prevent reporting
multiple errors in the same statement, but due to the statement counter
being updated too earlier, it failed.
GFX commands: Accept UDTs with cast() overload as target/source image
parser: Add helper function for cExpression() + fbSetCheckArray()
parser: Better DRAW syntax disambiguation (fixes #665)
Fix typo in closestType() (see also 83fb8877, fixes #716)
tests: Add regression test for #716
tests: Add more tests for overload resolution of integer types
C backend: Emit proper source file names for procedure bodies under -g

(80595601 regression)
C backend: Emit proper source file names also for PRIVATE procedure bodies

Cannot always rely on env.inf.name to point to the source file of the
procedure that's currently being emitted. That's because PRIVATE procedures
are emitted after all others, even behind main(), when env.inf.name points
to the toplevel file.

Luckily we already have symbGetProcIncFile() though to get a procedure's
#include source file name if it came from an #included file. The ASM
backend uses this too.