ast-node-arg: Fix some comments
ast: Use AST_OPOPT_ISINI with astNewASSIGN() where it makes sense

Everytime astNewASSIGN() is used to "copy-construct" something,
AST_OPOPT_ISINI should be used.

Currently it only matters for UDTs and strings, because for them assignment
and copy construction are different due to constructors and Let overloads,
etc. For simple data types like integers though, AST_OPOPT_ISINI doesn't
make a difference, because assignment & copy construction are the same
thing.

This fixes a case in ast-node-arg.bas, where AST_OPOPT_ISINI was definitely
missing - when passing classes without copy-constructor to a Byval
parameter, the Let overload was being called instead of the implicit
memcpy() (that's currently done in place of the copy-constructor call).
Better error message for dynamic string/class array fields

Previously, symbAddField() was checking whether the field's dtype is STRING
or a class, and only checked whether it's a dynamic array afterwards.

This changes it to check for dynamic arrays first, and to only check the
dtype if it's not a dynamic array, because in case it is, the dtype doesn't
matter, as only the array descriptor, not the array elements, will be
included in the parent UDT.
ast: Turn AST_INIOPT_ISINI into a boolean
ast: Add astNewASSIGN() options parameter to astTypeIniFlush()
ast: Add "missing" AST_OPOPT_ISINI's in astBuildNewOp()
ast: Preserve AST_OPOPT_ISINI for astTypeIniFlush() in astNewASSIGN()
Fix overload resolution to allow passing up-casted args to CONST params