Trait based inheritance

This is largely based upon #9 and #91, but fleshed out to make an actual inheritance proposal.
Well... I already did. It would also force us to think about e.g. how to handle name shadowing of fields, which is a complication that doesn't currently exist. And the `struct Child: Parent` syntax would lead people to believe it also enables things like passing `&Child` where `&Parent` is expected, which is a whole other can of worms.

The point is only that none of this is *necessary* for the purposes of this RFC. All that we need here is for `Child: Extend<Parent>` to be satisfied, and all that we need for that is for the physical layout in memory of the `Child` struct to begin with `Parent`, and all that we need for that is to be able to specify which field comes first in the `struct`. We don't otherwise need to change how existing `struct`s already work in any other way.

But this is really a minor detail of the design and I don't care that strongly about it, so I'm not going to argue it further.