text: Title: Support DataTree in xarray.concat
  Body: ### What is your issue?
  
  Something like this works, but is a little awkward -- especially the skipping over dimensions that are only defined on some node levels:
  ```python
  def concat(*datasets, dim):
      if not all(dim in ds.dims for ds in datasets):
          return None
      return xarray.concat(*datasets, dim=dim)
  
  xarray.map_over_datasets(concat, tree1, tree)
  ```