remove numNodesTried from HearthTreeNode

Reduce memory usage in preparation for further work
int -> byte in PlayerModel
duplicate node pruning for depth first board state factory

DepthBoardStateFactory now keeps a list of all unique boardModel that
it has simulated already.  If the new node that it creates is a
duplicate of a previous node, DepthBoardStateFactory will discard the
node and will not create its children nodes.  Enabling this feature
should make the simulation runs much faster at the expense of increased
memory usage.
Fix warnings
Make spending weapon charges easier and reuse available methods
Add test for deepCopy of hero weapon
Remove duplicate test
Add test to verify heros cannot attack without a weapon. Minor code cleanup.
Add frozen to canAttack and remove extraneous frozen check in Hero
Change unimplemented method to abstract
Add hero armor test. Minor cleanup.
Tests for fatigue damage. Also added test covering existing bug around spellpower effecting armor properly.
Deprecate hasAttacked since nothing is using it. canAttack does what is needed.
This private variable was never used and was probably trying to set the action on HearthTreeNode anyway.
Remove Minion.summoned_
Added verification of hasWindFuryAttacked
Added test for Corruption effect
Test battlecry summon on full board
Add a bunch of deepCopy and equals tests
Use canAttack instead of custom checking