This builder takes a Position and a Move, validates the move, and makes the move in that position. Its build() method returns a new Position with the move made.