Fix linkage1 test which fails due to --as-needed

It appears that the --as-needed flag to linkers will not pull in a dynamic library unless it satisfies a non weak undefined symbol. The linkage1 test was creating a dynamic library where it was only used for a weak-symbol as part of an executable, so the dynamic library was getting discarded.

This commit adds another symbol to the library which satisfies a strong undefined symbol, so the library is pulled in to resolve the weak reference.
Allow inheritance between structs.

No subtyping, no interaction with traits. Partially addresses #9912.
Properly handle privacy of inherited fields.

Also add a debug-info test
Add the `virtual` keyword