Alternative to virtual struct and functions by extending enums

This is an alternative plan for virtual structs/functions that implements virtual structs by making it possible to inherit enums to support class inheritance trees, and by automatically dispatching traits over them.

I think this is a superior alternative to both of the current proposals (#5 and #9) and what I originally proposed on the mailing list (which was very similar to #9).
Is

```rust
enum Enum<T, U> {
    field1: Type1,
    field2: Type2,
}
```

any different to that with `s/enum/struct/`?