Support numpy/torch/tf/jax formatting for IterableDataset
Right now `IterableDataset` doesn't do any formatting. Only the "torch" format can be used to make the dataset inherit from `torch.data.IterableDataset` and make it work with a torch DataLoader.

In particular this code should return a numpy array:
```python
from datasets import load_dataset

ds = load_dataset("imagenet-1k", split="train", streaming=True).with_format("np")
print(next(iter(ds))["image"])
```

Right now it returns a PIL.Image.

Setting `streaming=False` does return a numpy array after #5072 