Trait based inheritance

This is largely based upon #9 and #91, but fleshed out to make an actual inheritance proposal.
Probably - I could image a situation where substructs are used to add methods and not data and you could store everything by value, but pointers will be the common case. Also, note that it doesn't have to be just a pointer to an "object" as would be enforced by other proposals - there could be more data associated with the pointer, such as if a choice is made to use fat pointers.