Efficient single inheritance

Efficient single inheritance via virtual structs and unification and nesting of structs and enums.
@bstrie, Swift doesn't try to unify them I guess? And if we do the unification, our "enums" and "structs" would not be like Swift's (or anyone else's) any more. Principle of least surprise, right?

I think we can just say "`data` is like Swift's `enum`s and `struct`s rolled into one and you can naturally nest them." (Or tell the reader to learn Haskell and write his/her own monad tutorial ;)

Using `enum` and `struct` to differentiate sized-ness is also weird. I think a dedicated `unsized` keyword would be a better choice. (And this keyword would be introduced by DST anyway.)

Or, can we leave `enum` and `struct` as-is, and find some other way to do inheritance?

Is it possible to provide building blocks in the language, but put inheritance support in the library? Like with smart pointers and tasks? People are talking about #9 and #91, are they something like that?