boardEvaluation function added

began work on evaluation of the current gameboard. currently just
calculates advantage based on number of pieces remaining. Several things
to note about the current setup:

each board has it's own evaluation function. This means that for the AI,
the AI will need to make a copy of the current board, make the move that
it is trying to evaluate, then run the evaluation function on the new
board to get the value for the tree node for that move(and then store
the value for the tree node and delete the copy of the board that was
used for evaluating the move). Seems like it's unnecessary use of
memory, but the time should not be an issue, especially if/when we
multithread the AI.