Trait based inheritance

This is largely based upon #9 and #91, but fleshed out to make an actual inheritance proposal.
I'm still unsure why this actually needed.

Wouldn't

```rust
impl <T: 'static> Typed for T {
   static TYPE_ID: TypeId::of::<Self>()
}
```

do the same job as an impl for all types?