implemented (via transforms) equals, hashCode, and toString
added size checks on the icon parts to warn if they don't match, and adapt the combined output as needed
replaced Card.setTitle and .setKey with just .set to return the actual CardSet object
added the ability to describe a a set's icon in the XML descriptor
added the TestSet psuedo-icon stuff to the descriptor
made a couple null-safety tweaks to the main getIcon method
added a constructor that accepts URL and loads it lazily
fixed some references to DefaultCard.cardSet
instead of inlining the set icon elements, reference them (like card art is referenced)
added a toString method
added an 'info' factory
added validation of the cardset icon
enormously simplified CardSetValidatorTest's implementation
pulled 'check' out into a new base class so I can reuse it for card tests
added isType and isSubtype to Card, implemented them in DefaultCard, and then used them to reduce some redundancy there and in FrameTool
added a sort() method to SymbolGroup, and moved DefaultSymbolGroup from the 'core' module to 'symbol'
made Symbol extend Comparable
renamed the 'tests' parameter to 'expected' so assertion dumps are easier to read
started fleshing out the card validation stuff, both tests and implementation
converted the old CostType ordering tests to Symbol-based tests, which fail.  :(