Fixes#13399
**Problem:**
When using Form-based dependency models, default values were being pre-filled
during form parsing, causing `model_fields_set` to include all fields with
defaults even when they weren't explicitly provided in the request. This made
it impossible to distinguish between explicitly set fields and fields using
their default values. JSON body models didn't have this issue.
**Root Cause:**
In `_get_multidict_value()`, when a form field value was `None` (not provided)
and the field wasn't required, the function returned `deepcopy(field.default)`.
This pre-filled default was then added to `params_to_process` and passed to
Pydantic, which treated it as explicitly set.
**Solution:**
Changed `_get_multidict_value()` to return `None` instead of the default value
when a field is not provided. This allows Pydantic to handle defaults during
validation, correctly preserving `model_fields_set` to only include fields
that were actually provided in the form data.
**Testing:**
- Added comprehensive test suite comparing JSON and Form behavior
- Verified that Form models now match JSON model behavior for `model_fields_set`
- All existing tests continue to pass
This makes Form and JSON body parameter handling consistent, allowing
developers to use `model_fields_set`, `model_dump(exclude_unset=True)`, and
`model_dump(exclude_defaults=True)` correctly with Form-based models.