rtlib: Print error messages to stderr without waiting for console reset

I'd like to fix up Assert() and AssertWarn() to print directly to
stderr, instead of using the normal FB PRINT mechanism, because that
goes to the FB SCREEN - but printing an assert() message to a graphics
screen when it's going to be closed immediately afterwards is useless.

Using fputs() to stderr seems to work fine in testing, however I found
that the runtime error messages originally did the same but then were
changed to store the error message in a temporary buffer in fb_Die()
and let fb_hRtExit() show the error after resetting the rtlib's
console I/O business. (since 8c97f1ad)

That raised the question whether it'd be "safe" to print to stderr
directly. Unfortunately I do not know what reasons there were/are for
delaying the printing to stderr until after the console stuff was
cleaned up. Testing suggests it is unnecessary nowadays though.

Since it seems like it's not needed anymore, and the rtlib is not
touching stderr at all on its own, and the gfxlib does not reset
the console on exit, and we already use fputs directly on stdout
to print Unicode strings/chars, the same should work with stderr.

Then, Assert() and AssertWarn() can do the same thing as fb_Die().
rtlib: Print assert() messages to stderr, like runtime errors (fixes #637)

This changes Assert() and AssertWarn() to print directly to stderr
instead of using the normal FB PRINT mechanism. This means the output
will always appear in the console (or whereever stderr was redirected
to), but it also means that the assertion messages will be visible even
when using the FB graphics mode.

Printing the assertion messages to the FB screen directly is useless
because the assert() will also exit the program causing the gfxlib2
to close the screen window immediately, preventing the user from seeing
the message at all.

Runtime error messages were already printed to stderr, so it seems good
to do the same for assertions.
Fix (?) unit test 'tests/functions/bydesc.bas' from cae5cbd
Make pointer subtraction return a signed int
- add pointer subtraction test to check for negative results, plus sizeof() test to ensure we won't return 64-bit ptr subtractions in a 32-bit int.
ast: Remove unused astTypeIniGetHead()
ast: Add astBuildPTRCHK() to handle lex linenum/filename access
ast: Add astBuildBOUNDCHK(), ditto
Add common hStaticArrayBoundChk(), to remove duplicate code
ast: Use NULL instead of @astLoadNOP for dead astLoad() callbacks

This will ensure the compiler aborts rather than just ignoring illegal
cases, which is useful during development.
rtlib: fb_AssertWarnW(): Convert from wchar instead of using fwprintf()
Revert "rtlib: Print error messages to stderr without waiting for console reset"

This reverts commit 55b01a3311444ac71f06b907653ba6e80a69e383.

At least the DOS gfxlib clears the console on exit so at least in that
case we need to delay printing the message.
rtlib: Print assert() messages after console reset, like runtime errors

(completing commit d74479ff1686e8b7134a647158395017cf77798d)
Merge branch 'rtlib-assert'
parser-decl-var: Make hMatchEllipsis() private
parser-decl-var: Turn hVarDeclEx() into cVarDecl()
Disallow static member procs in scoped UDTs, just like methods
parser-proc: hGetId(): Remove some duplicate code, add commentary
parser-proc: Show type suffix error on the ID token, not the next one
parser-proc: Remove duplicate hDoNesting() code, add commentary
parser-proc: cCtorHeader(): Remove is_ctor var, check attribs instead