Efficient single inheritance

Efficient single inheritance via virtual structs and unification and nesting of structs and enums.
@dobkeratops Being able to more easily bind to C++ libraries is very nice, but we would face the risk of people overusing inheritance in other codes unrelated to its best use cases. If we can put inheritance support in the library, like how we have `Cell` in the library, then we can send the message that inheritance is a valuable tool for exceptional situations.

There is always a trade off. 

Can a library-based inheritance solution be used to simulate C++'s semantics to some extent, and bind to C++ libraries, with the help of a binding generator/macro? C++ also has default arguments and ad-hoc function overloading, which Rust has not, so at least for now, I am of the opinion that we need a bindgen anyway.

@bstrie, I think @nick29581 actually prefers unifying `enum` and `struct` under the `data` banner, maybe he has such a proposal (at least in his mind)?