semantic: Generalise size getting.

This makes structs with aliases var members work.
semantic: Retrieve type from typeid expressions.
vrt: Add stub typeinfo module.
vrt: Add type field to TypeInfo.
vrt: Add mangledName method to TypeInfo.
semantic: replace typeid expressions with calls to new TypeInfo(...)
semantic: Mangle the name in typeinfos correctly.
semantic: Get parent names for typeid mangles from scope names.
semantic: In classify.scopeLookup, check for non-null scope member.
semantic: retrieve TypeInfo from object.
semantic: WIP (broken) struct literal stuff.
vrt: Move TypeInfo into object.

This is much simpler in terms of TypeInfo retrieval when
_inside_ of object.
semantic: Name lowered structs as TypeInfo.
semantic: Split lowerers pass into two.

All the classes in all the modules need to be lowered.
Don't cast functions in the vtable.
semantic: Use scope names when mangling types.

This means symbols imported from other modules will
be mangled as belonging to the correct module.
semantic: Use module scope to determine mangling name.
vrt: Make allocDg take a typeinfo and do nothing with it.
vrt: Use size and count in allocDg.
semantic: Replace simple new expressions.