clearLines method
Returns a new board with completed rows cleared, and the count cleared.
Implementation
(BoardState, int) clearLines() {
final remaining = grid.where((row) => row.any((c) => !c.filled)).toList();
final cleared = rows - remaining.length;
final newRows = List.generate(
cleared,
(_) => List.generate(cols, (_) => const Cell.empty()),
);
final newGrid = [...newRows, ...remaining];
return (BoardState(rows: rows, cols: cols, grid: newGrid), cleared);
}