Trait based inheritance

This is largely based upon #9 and #91, but fleshed out to make an actual inheritance proposal.
If it were `super field_name: Parent` (I assume this is what @glaebhoerl meant?) then it's easy to explicitly access things using the parent (this isn't necessary a good thing in all circumstances), and you don't get any 'surprise'/implicit fields being introduced.