Include namespaces into UDT name mangling (for storing into RTTI tables)

The Is operator is based around comparing the identifiers stored in RTTI
tables. GCC stores the mangled name, i.e. Foo is stored as "3Foo" and
ns::Foo is stored as "N2ns3FooE".

fbc didn't take into account namespaces in this scenario and always stored
"3Foo" no matter whether that UDT was in a namespace or not. This of course
prevented the Is operator from telling UDTs with the same identifier but
declared in different namespaces apart.
symb: Add symbSetMangledId() to remove some duplicate code
C backend: Use C++ mangled name for UDTs, instead of doing custom mangling

(not really needed, but this seems like the better thing to do overall,
and now it's possible thanks to the previous fix)
Add rtti/vtables to their parent UDT namespace, to fix name mangling

hBuildRtti() and hBuildVtable() used to do the mangling for rtti and vtable
manually and use the result as ALIAS for the global vars, but the problem
with that is that global vars inside namespaces, even if an ALIAS was
given, will additionally be mangled according to those namespaces, i.e.
the ALIAS is not the only thing respected; instead, more is added.

This of course caused rtti/vtables inside namespaces to have
GCC-incompatible name mangling. This patch fixes that by adding the
rtti/vtables to the parent UDT (like STATIC member variables) and marking
them with a new flag each, allowing hMangleVariable() to produce the
proper mangling.