Trait based inheritance

This is largely based upon #9 and #91, but fleshed out to make an actual inheritance proposal.
There is already an attribute (crepr or something similar) which forces the fields in a struct to be stored in the order they are specified. Would that be enough or do you still need first_field?