performance improvement: score is calculated 'on the move' instead of every time from scratch and
added a new method for getting the score after a given move without actually doing the move
performance improvement: pre-sort the moves to allow better pruning!