text: Title: [BUG] Optimization that compacts multiple filters into `eval` generates unexpected node in graph
  Body: <!--
  Thank you for your contribution!
  
  Please review https://github.com/mars-project/mars/blob/master/CONTRIBUTING.rst before opening an issue.
  -->
  
  **Describe the bug**
  
  Optimization that compacts multiple filters into eval generates unexpected node in graph.
  
  **To Reproduce**
  To help us reproducing this bug, please provide information below:
  1. Your Python version
  2. The version of Mars you use
  3. Versions of crucial packages, such as numpy, scipy and pandas
  4. Full stack of the error.
  5. Minimized code to reproduce the error.
  
  ```python
  @enter_mode(build=True)
  def test_arithmetic_query(setup):
      df1 = md.DataFrame(raw, chunk_size=10)
      df2 = md.DataFrame(raw2, chunk_size=10)
      df3 = df1.merge(df2, on='A', suffixes=('', '_'))
      df3['K'] = df4 = df3["A"] * (1 - df3["B"])
      graph = TileableGraph([df3.data])
      next(TileableGraphBuilder(graph).build())
      records = optimize(graph)
      opt_df4 = records.get_optimization_result(df4.data)
      assert opt_df4.op.expr == "(`A`) * ((1) - (`B`))"
      assert len(graph) == 5  # for now len(graph) is 6
      assert len([n for n in graph if isinstance(n.op, DataFrameEval)]) == 1  # and 2 evals exist
  ```
  