text: Title: Support `merge_small_files` for `md.read_parquet`  etc
  Body: <!--
  Thank you for your contribution!
  
  Please review https://github.com/mars-project/mars/blob/master/CONTRIBUTING.rst before opening an issue.
  -->
  
  **Is your feature request related to a problem? Please describe.**
  
  For reading data op like `md.read_parquet` and `md.read_csv`, if too many small files exist, a lot of chunks would be created, and the upcoming computation could be extremely slow. Thus I suggest to add a `merge_small_files` argument to these functions to enable auto optimization on merging small files.
  
  **Describe the solution you'd like**
  
  Sample a few input chunks, e.g. 10 chunks, get `k = 128M / {size of the largest chunk}`, if greater than 2, try to merge small chunks every k chunks.
  
  