librustc: stop inheritance with tuple/unit structs

Struct inheritance, unstable as it is, only really makes sense for
record-like structs and previously produced bad code when used with
unit-like structs or tuple structs. So this commit changes librustc to
reject virtual unit-like structs and tuple structs, and unit-like
structs and tuple structs that inherit from other structs.

[breaking-change]