Represents a move which either is a normal move or a drop move.
MoveRecord stores information necessary to undo the move.