Trimmed castling logic.
Added Board.moved: Set[Square] and removed Piece.hasMoved: Boolean.
Simplified piece evaluation.
Sped up piece evaluation by avoiding Board.pieces call.
Reuse square instances.