I'm a little confused to why there are so many `Any*Ext` traits. I have a feeling this is that the different kinds of self styles are for, so why can't this be implemented for `~self` and be a default method on the `Any` trait. 

In general it's unfortunate if we have to create a large number of trait implementations like this, we should be striving for one trait which is all that is needed (there should only be an `Any` trait in this module).