Card class returns HearthTreeNode instead of BoardState

Refactored the code so that the useOn and attack functions of Card
class and its derivatives return a HearthTreeNode<BoardState> instead
of BoardState.  This should allow Card classes to do fancier things.