Trait based inheritance

This is largely based upon #9 and #91, but fleshed out to make an actual inheritance proposal.
This is essentially the same thing as the existing [`Any`](http://doc.rust-lang.org/std/any/index.html) trait<sup>1</sup>.

<sup>1</sup> Except that as the current `Any` is implemented, it *is* known to be `impl`ed by all types `T: 'static`, which is obviously wrong.