title: Avoid recursion error in map if example is returned as dict value
comments: _The documentation is not available anymore as the PR was closed or merged._
body: I noticed this bug while answering [this question](https://discuss.huggingface.co/t/correct-way-to-create-a-dataset-from-a-csv-file/15686/11?u=mariosasko). 
  
  This code replicates the bug:
  ```python
  from datasets import Dataset
  dset = Dataset.from_dict({"en": ["aa", "bb"], "fr": ["cc", "dd"]})
  dset.map(lambda ex: {"translation": ex})
  ```
  and this is the fix for it (before this PR):
  ```python
  from datasets import Dataset
  dset = Dataset.from_dict({"en": ["aa", "bb"], "fr": ["cc", "dd"]})
  dset.map(lambda ex: {"translation": dict(ex)})
  ```
  
  Internally, this can be fixed by merging two dicts via dict unpacking (instead of `dict.update) `in `Dataset.map`, which avoids creating recursive dictionaries.
  
  P.S. `{**a, **b}` is slightly more performant than `a.update(b)` in my bencmarks.