Trait based inheritance

This is largely based upon #9 and #91, but fleshed out to make an actual inheritance proposal.
I think this variation would be preferable (we could also use `super` as a modifier). Generally attributes are *supposed* to be "only metadata"; if it has an effect on which things typecheck, then it's probably better for it to be a first-class language construct.