Refactor `string_to_dict` to return `None` if there is no match instead of raising `ValueError`
cc: @lhoestq  I am going to rebase #7434 onto this branch. Then we can merge this one first if you approve, and then #7434. @lhoestq any thoughts here? The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/datasets/pr_7435). All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update. It looks like I was unsafely asserting that `source_url_fields is not None` in `image.py`, `video.py` and `audio.py` (which did not correspond to the `except ValueError` like was there previously). I've changed it to handle `source_url_fields is None`. Can we re-run CI on this one? Sweet! These failures are looking spurious due to connectivity issues. Can the failing run be retried? @lhoestq Sorry to double ping, but can this PR be reviewed? I think it is ready!

Making this change, as encouraged here:

* https://github.com/huggingface/datasets/pull/7434#discussion_r1979933054

instead of having the pattern of using `try`-`except` to handle when there is no match, we can instead check if the return value is `None`; we can also assert that the return value should not be `None` if we know that should be true