astBuildTempVarClear(): Use symbGetLen() instead of symbCalcLen()
symb: Add symbRecalcLen() for "correct" length updating

Most FBSYMBOLs store the result of symbCalcLen() in the FBSYMBOL.lgt field,
but PARAMs as an exception store the result of symbCalcParamLen(), which
takes into account whether the param is BYVAL/BYREF/BYDESC/VARARG.

Code examples where the old quirky code actually caused problems are rare
though, because, for example, we don't allow BYVAL AS FWDREF, so you can
only have BYREF, or a BYVAL AS FWDREF PTR, and that's a length of
sizeof( ANY PTR ) either way, no matter how it was calculated.

However, in case of a BYREF AS FWDREF with the FWDREF later being
backpatched with a big UDT, we can actually observe a difference.
Before the backpatching, the param length was 4 (due to the BYREF),
but then symbReplaceForwardRef() overwrote that with the symbCalcLen()
result, sizeof( UDT ), ignoring the BYREF.

As a result the param's length is wrong, which should break anything
using it, such as va_first() (or symbCalcProcParamsLen(), if it didn't
give special treatment to BYREF/BYDESC manually - which shouldn't be
needed anymore after this patch).
symbCalcProcParamsLen(): Simply use the param's length, no special handling