Wrong element_spec when mapping ragged dataset
@0x0L FYKI, If a DataSet's elements are RaggedTensors, then you can batch them, even if they don't have the same size. The result will be a RaggedTensor with one more ragged dimension. The reason that `ds.map(lambda x: x).padded_batch(2, padded_shapes=[None])` works is that the map converts the RaggedTensor elements into Tensor elements. I was able to replicate the issue reported [here](https://colab.research.google.com/gist/sushreebarsa/a9ee1d794fd2c7b86b8fd4139735fff9/61869.ipynb) could you please confirm the outcome here. Thank you! Precisely, the point is that

```
import tensorflow as tf
ds = tf.data.Dataset.from_tensor_slices(tf.ragged.constant([[1, 2, 3], [4, 5]]))

for x in ds.map(tf.square).batch(2, drop_remainder=True):
    pass
```

crashes with

```
InvalidArgumentError: {{function_node __wrapped__IteratorGetNext_output_types_1_device_/job:localhost/replica:0/task:0/device:CPU:0}} Cannot add tensor to the batch: number of elements does not match. Shapes are: [tensor]: [2], [batch]: [3] [Op:IteratorGetNext] name: 
```
 Hi @0x0L ,

Whenever we apply any transformations on a Dataset by default it will try to transform into batches of Tensors and hence we get `TensorSpec` as output for `element_spec`.

If we need to do batching on a Ragged dataset we need to use ragged_batch() function explicitly to make it as Ragged batches.

The below code will work and it will output `RaggedTensorSpec` for `ds.element_spec`

```
ds = ds.map(tf.square).ragged_batch(2, drop_remainder=True)
ds.element_spec
```
Please refer attached [gist](https://colab.sandbox.google.com/gist/SuryanarayanaY/b6fd1b6d42ac02e6bbe3520d0a272b9f/61869.ipynb).

Hope this helps. Thanks!
 `ragged_batch` works but I'm more focused on the semantics of `map` as one could reasonably expects that `ds.map(lambda x: x)` is still `ds`.

The doc for `tf.data.Dataset.map` does not mention this behavior.
### Issue type

Bug

### Have you reproduced the bug with TensorFlow Nightly?

No

### Source

binary

### TensorFlow version

2.13

### Custom code

Yes

### OS platform and distribution

Linux, Rocky 9

### Mobile device

_No response_

### Python version

3.10.12

### Bazel version

_No response_

### GCC/compiler version

_No response_

### CUDA/cuDNN version

_No response_

### GPU model and memory

_No response_

### Current behavior?

```python
ds = tf.data.Dataset.from_tensor_slices(tf.ragged.constant([[1, 2, 3], [4, 5]]))
ds.element_spec
```

The `element_spec` is a `RaggedTensorSpec`

But after a `map`, like for instance
```
ds.map(tf.square)
````
the `element_spec` is just a `TensorSpec`

### Standalone code to reproduce the issue

```shell
.
```


### Relevant log output

_No response_