Trait based inheritance

This is largely based upon #9 and #91, but fleshed out to make an actual inheritance proposal.
That would be enough, but it would also be overkill - it would still be nice for the compiler to be free to reorder the rest of the fields.