MudTextField: Keep SetTextAsync from marking the field touched
Fixes #12997: Calling MudTextField.SetTextAsync(...) programmatically marked the field Touched. Touched is meant to reflect user interaction (it gates required-error display and counts toward MudForm.IsValid), so a code-driven set shouldn't flip it. The call flows through SetTextAndUpdateValueAsync, which marks the field touched on any non-empty text — added by #13328, which suppresses that write for parameter-driven syncs but not for the public SetTextAsync API.
Fix by saving and restoring Touched around the set. The value still updates and the form is still notified via FieldChanged (so validity re-evaluates), but the touched state is left unchanged.
Note: We deliberately did not suppress FieldChanged here — an existing test (FieldChangedEventShouldTrigger) asserts that a programmatic SetTextAsync notifies the form, which is the right contract; only Touched was wrong.