Both classes satisfy the liskov substitution principle and would have inherited `Struct.new(:type)` anyhow. It seemed like a sensical place to hang `deprecation_string_for` also. I could see delegation making more sense if we needed to share `deprecation_string_for` more-widely, but this is at least better than the old mixin module.