Trait based inheritance

This is largely based upon #9 and #91, but fleshed out to make an actual inheritance proposal.
Number of classes in the inheritance chain between the actual class and the class you want to cast to, or total number of classes in the inheritance chain if the downcast fails, I think. I'm not certain about this, but I remember reading that some implementations of RTTI, to support open inheritance, use a linked list of classes that has to be linearly scanned to find if the target class is present.