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