ast-node-proc: Split hCallStaticDtor() out of hCallStaticCtor()
symb: Add symbDelField()
symb: Eliminate duplicate array dimensions deletion code
symb: Eliminate duplicate namespace deletion code
symb: Add some notes regarding the deletion of attached initrees

(astEnd() runs before symbEnd(), so there is no point trying to free
initrees manually during symbDel*() since all that's left of the ASTNODEs
by then is dangling pointers)
ast: Replace AST_INIOPT_RELINK with astTypeIniClone/Delete()
Don't emit or destruct temp vars for sizeof() or typeof() argument

The expression given to sizeof() or typeof(), and also len() when evaluated
at compile-time, will be deleted and not be emitted. Thus we should not
emit any temp vars it used/created either, because they would just waste
stack space, and more importantly, we must not call destructors for such
temp vars either, because they were never constructed or even cleared,
since the expression isn't even emitted.

Otherwise we may end up calling a destructor of some uninitialized class
object, or fb_StrDelete() on an uninitialized FBSTRING, etc.
This crashed the test suite under -gen gcc due to a typeof( iif() ) where
the iif() allocated an FBSTRING temp var and fb_StrDelete() was called on
an uninitialized FBSTRING. The same problem existed for -gen gas of course,
although the test suite didn't happen to crash under -gen gas. But valgrind
showed the accesses to uninitialized memory.

This patch ...
- extracts the temporary scope handling code from ast-node-typeini.bas,
  and moves it into ast-node-scope.bas in form of several astTempScope*()
  functions
- adjusts the typeof() and sizeof()/len() parsers to use the temporary
  scopes when parsing their expressions so that any temporary symbols are
  captured and can be deleted.
- before, astDtorListClear() was called manually after cInitializer()
  calls, but as simplification the astTempScope*() code will take care of
  doing this now, in form of astDtorListDel() calls for each symbol added
  to the temporary scope.
- This results in much more fine-grained control over which entries are
  removed from the AST dtorlist, and that's useful for typeof()/sizeof(),
  because we only want to remove the dtor calls corresponding to their
  argument, but not those from any other surrounding expressions, as in:
      print foo + sizeof( bar )
  Here we want to drop the temp vars from bar, but we also want to handle
  temp vars normally in foo, including dtor calls, thus we cannot do
  simply a global astDtorListClear().
- This actually left astDtorListClear() unused, thus it's being removed
- rtlMathLen() was essentially merged into hLenSizeof(), since it could
  also delete the expression, it had to handle the temp scope stuff too,
  then it was easiest to remove it and let hLenSizeof() do all the work.
- So now ast-helper.bas (the one other place calling rtlMathLen()) uses
  rtlWstrLen() directly instead