Board class is now stateless, added StatefulBoard.

Rewrite Board class to act as stateless.  This means mutator functions allow the current object to remain intact and return a new board object based upon the current state plus mutator.  The addition of a single, random cell is still managed by the Game object, outside of the board.  This is also a stateless operation, which is weird but consistent.