Efficient single inheritance

Efficient single inheritance via virtual structs and unification and nesting of structs and enums.
I think we should constrain ourselves to `{}` when comes to sort of named arguments. In general I was thinking something like this:

```rust
let x: E2 = E2 { f: 34, Variant2(23) };
```

That is, the current struct literal would be extended to a general data type literal. A list in the braces would then contain zero or more fields (`<id>: <expr>`), zero or one variant (`<path>` or `<path>(...)` or `<path> { ... }`), and zero or one struct extension (`..<expr>`) in this exact order. The existing simple variant, say, `Some(42)` would denote a shorthand for `Option { Some(42) }`.