put back MagicLoseGameAction with default reason
make MagicMappable generic to remove casting in MagicSourceActivation, replace MagicPermanent's chosenTarget with chosenPlayer
use long for id to remove cast from Thread.getId
make cleanup a member of the class, simplify doAction method