Cleaned up evaluate function

Made the evaluate function actually evaluate the state of a game from
the perspective of the current player, rather than trying to evaluate
a potential move from the perspective of the current player. The latter
option forced me to insert weird (-1)s because evaluating a potential
move means changing the game state to the opposing player, which went
against my intuition of what evaluate should say.

So now, running evaluate on the current state gives, intuitively, a
score for how good the current state of the board is for the current
player. This means that if run on a potential move, evaluate will give
the score for how good that potential state is for the opposing player.