Retrieves the new Position that results from executing the provided legal Move. Throws a MoveException if the provided move is not legal in the current position.