Adds AliyunParaformerASRProvider (DashScope WebSocket streaming via
URLSessionWebSocketTask, paraformer-realtime-v2 model) and
CustomOpenAIWhisperASRProvider (HTTP batch via multipart upload, 25MB
guard, WAV header wrapping, BCP-47 → ISO-639-1 language mapping).
CredentialsSchemaV1 generalizes providers.asr to per-providerId
[String: CredentialsProviderASREntry] with optional apiKey/baseURL/model
alongside legacy appKey/accessKey/resourceId. Fully backward compat
(encodeIfPresent + typealias for old name).
Vault gains asrProviderConfig(for:) / setASRProviderConfig(_:for:) /
removeASRProvider(_:) helpers.
DictationCoordinator factory adds cases for aliyun-paraformer (fully
wired streaming, auto-falls-back to LLM aliyun-dashscope apiKey when ASR
side is empty) and custom-openai-whisper (factory case in place but
coordinator still only calls openStreamingSession; batch dispatch
TODO).