Fix image-text-to-text stop_sequence handling
Author: Sunt-ing
Pull request: yes

<!-- ci-dashboard-badge:start -->
[![CI](https://transformers-ci.lor-e.huggingface.cool/badge/pr?pr=47032)](https://transformers-ci.lor-e.huggingface.cool/d/pytest-observability-by-pr/pytest-observability-branch?var-pr=47032)
<!-- ci-dashboard-badge:end -->

# What does this PR do?

`ImageTextToTextPipeline` accepts `stop_sequence`, but the stop-sequence branch writes into `generate_kwargs` even when the user did not pass a `generate_kwargs` dict. A normal pipeline call such as `pipe(image, text=..., stop_sequence=".")` fails before generation with:

```text
TypeError: 'NoneType' object does not support item assignment
```

This creates the forward `generate_kwargs` when needed and passes stop sequences through generation's `stop_strings` support, matching the any-to-any pipeline path. This also avoids forcing an extra `eos_token_id` into image-text model wrappers that already provide their own decoder EOS value.

<details><summary>Repro and output</summary>

```python
from PIL import Image
from transformers import pipeline


model_id = "Xenova/tiny-random-LlavaForConditionalGeneration"
image = Image.new("RGB", (16, 16), color="white")
pipe = pipeline("image-text-to-text", model=model_id, device=-1)
print(pipe(image, text="<image> Describe.", stop_sequence=".", max_new_tokens=1))
```

```text
# current main
loading Xenova/tiny-random-LlavaForConditionalGeneration
loaded ImageTextToTextPipeline LlavaForConditionalGeneration
ERR TypeError "'NoneType' object does not support item assignment"

# after this PR
loading Xenova/tiny-random-LlavaForConditionalGeneration
loaded ImageTextToTextPipeline LlavaForConditionalGeneration
OK [{'input_text': '<image> Describe.', 'generated_text': '<image> Describe. starb'}]
```

</details>

<details><summary>Tests</summary>

```text
python -m pytest -q tests/pipelines/test_pipelines_image_text_to_text.py::ImageTextToTextPipelineTests::test_stop_sequence_without_generate_kwargs

tests/pipelines/test_pipelines_image_text_to_text.py::ImageTextToTextPipelineTests::test_stop_sequence_without_generate_kwargs PASSED [100%]

============================== 1 passed in 0.79s ===============================

python -m ruff check src/transformers/pipelines/image_text_to_text.py tests/pipelines/test_pipelines_image_text_to_text.py
All checks passed!

git diff --check
```

</details>

## Code Agent Policy

- [x] I confirm that this is not a pure code agent PR.

## Before submitting
- [ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
- [x] Did you read the [contributor guideline](https://huggingface.co/docs/transformers/contributing) and the
      [Pull Request](https://huggingface.co/docs/transformers/pr_checks) checks?
- [ ] Was this discussed/approved via a Github issue or the [forum](https://discuss.huggingface.co/)? Please add a link
      to it if that's the case.
- [ ] Did you make sure to update the documentation with your changes according to the [guidelines](https://github.com/huggingface/transformers/tree/main/docs)?
- [x] Did you write any new necessary [tests](https://huggingface.co/docs/transformers/testing)?

## Who can review?

cc @zucchini-nlp @Rocketknight1

Comments:
The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_47032). All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

Some CLI types in the CI are causing issues so this might fail to merge, in which case rebasing it in a day or two should fix it

Thank you for your contribution 🤗!

## CI Security Gate — automatic approval blocked

This PR was **not** automatically approved for CI because the security gate failed.

**Possible reasons:**
- The PR touches 50 or more files — only PRs with fewer than 50 changed files are automatically approved
- A changed file is outside the allowed directories (`src/`, `tests/`, `docs/`, `utils/`), has a disallowed extension (only `.py`, `.txt`, `.md` permitted outside `tests/` and `docs/`), or is not `.md`/`.yml` inside `docs/`
- A new high-severity security issue was detected in the changed Python files (Bandit check)

See the [workflow run](https://github.com/huggingface/transformers/actions/runs/29503618746) for the exact violations.

A maintainer can review and manually approve CI if a finding is a false positive.

This should fix security CI :)

<!-- ci-dashboard-recap:start -->

---

### CI recap

**Dashboard:** [View test results in Grafana](https://transformers-ci.lor-e.huggingface.cool/d/pytest-observability-by-pr/pytest-observability-branch?var-pr=47032)
**Latest run:** [29570790833:2](https://github.com/huggingface/transformers/actions/runs/29570790833)
**Result:** `success` | **Jobs:** 15 | **Tests:** 171,969 | **Failures:** 0 | **Duration:** 12h 42m

<!-- ci-dashboard-recap:end -->