Wasm: fix `async` typed throws arguments mismatch trap (#89416)
Workaround for issue #89320: a Wasm runtime trap when `async` typed-throws closures are coerced via `thin_to_thick_function`. The WebAssembly backend pads swiftcc signatures with trailing `swiftself`/`swifterror` placeholders to align `call_indirect`. On thin `async` typed-throws callees the padding collides positionally with the trailing `ind_error_ptr`, miscompiling calls from thick callers.
This PR adds a mandatory SIL pass `WasmAsyncT2TLowering` (gated on `Triple::isWasm()`, runs after `OwnershipModelEliminator`) that rewrites the narrow bug shape (`isAsync`, `hasIndirectErrorResult`, non-polymorphic operand/result, `FunctionRefBaseInst` operand, single-BB uses) into a zero-capture `partial_apply [callee_guaranteed] [on_stack]` bracketed by `dealloc_stack`. The `partial_apply` lowering emits matching caller and callee arg layouts at the LLVM level, sidestepping the backend padding mismatch.
Resolves https://github.com/swiftlang/swift/issues/89320
rdar://177615931