Trait based inheritance

This is largely based upon #9 and #91, but fleshed out to make an actual inheritance proposal.
Unless I'm missing something, I believe all of these also need to require `A: Typed`.