ActivateAssist now is always chosen ahead of PlayCard/CastSpell to reduce the game state tree size.
Made BaseCard constructor internal;
Assigned Guid (technically a sequential counter) to every card created under game context.
Copied implementation of Random class from mono so that Random objects can be duplicated faster;
Used DynamicMethod and Emit to generate an early-bound version of behavior creation so that game cloning could be much faster;
Changed BaseSimulator interface: now it takes simulation context object as its second class when yielding choices for interactions;
Changed type of choice path from list to array;
Choice.DebugName is now enclosed by DEBUG instead of TRACE macro.
Added restriction on choice making:
* If there are multiple cards of the same type, sacrifice is chosen from one of them;
* Redeeming won't be made on the just-sacrificed card;
* When play multiple warriors in one turn, AI won't distinguish "Play A then B" from "Play B then A" as different paths;
* If the just-redeemed card is not played in this turn, the branch is killed;
* AI tries to attack the same card as the last AttackCard choice;
* If AI attacks opponent player, the different order of attacking is ignored.