Fixes a bug where a card's image will be repeatedly downloaded when ImageCache would return for a reason other than the image not being present, such as when requesting a very small image. That happened in practice during the drawing a card animation, where the card is scaled during the animation.
This got broken by the following refactor:
79c9c914e2
The result was that simulation AI was ignoring certain decision trees that involved
playing lands, leading to not considering certain lines of play and some log
messages printed to standard error. I've added a test that covers this logic to prevent
it breaking again in the future.
Also, a couple small clean ups to related tests.
* round 1
* round 2
* 10 more (Oct 1)
* attempt to add "Pump" to EffectAi
* more 10/4
* more/fixes 10/4
* more 10/4 (80 to go...)
* more 10/4 (70 to go...)
* 10/5 (60 to go...)
* more 10/5 (50 to go...)
* more 10/5 (40 to go...)
* more 10/5 (30 to go...)
* 10/6 (20 to go...)
* more 10/6 (10 to go...)
* more 10/6 (last of pump -> effect)
* more 10/6 (continuous kw static > cantblockby... 30 to go)
* more 10/6 (continuous > cantblockby... 20 to go)
* more 10/6 (continuous > cantblockby... 10 to go)
* last 10/6 (continuous > cantblockby)
* Final keyword cleanup?
* GameSimulationTest.testEquippedAbilities use Shroud instead of Unblockable
* fish token!
* CreatureEvaluator evaluate for unblockable
* AttachAi evaluate for unblockable
* some more tweaks
* PlayerControllerAi.chooseKeywordForPump refine some more
* SpecialCardAi remove Gideon keyword stuff
* PlayerControllerAi.chooseKeywordForPump improve further
* Card.associatedWithColor and Card.canProduceColorMana checks
* restore imports