implemented SparseBoardStateFactory

Except for special cases minion placement position doesn’t make much
difference.  So, instead of trying to place the minion at every
possible position, we usually only have to place it at a single
position and all other permutations can be assumed to be the same as
that single placement.  This assumption can significantly reduce the
number of tree branches and speed up the computation.

There are, however, minions that are actually sensitive to the
placement position.  For example, Flametongue totem and Defender of
Argus only affect adjacent minions.  For these minions, the flag
placementImportant_ must be set to true.
code clean up
Implemented Silvermoon Guardian
implemented Pyroblast
Implemented Priestess of Elune