added CardName that inherits from SmartName

This was inspired by the ongoing cleanup of card.rb, but I think this is the right way to go. It gets some stuff out of smart_name that was really "too Wagny" (and ends up simplifying things there), it makes it easy for us to test and tweak CardName stuff within wagn, and it generally offers a bit cleaner separation.