inference: Respect function-level `@max_methods` (#63420)
* inference: respect function-level `@max_methods` for splatted and keyword calls
A function-level `@max_methods` setting (`typeof(f).name.max_methods`) was
only consulted when `f` itself was the head of the call. Splatted calls go
through `Core._apply_iterate`, and `abstract_apply` forwarded the value
resolved for `_apply_iterate` (the module or global default) to the callee
as an explicit override. Keyword calls go through `Core.kwcall`, whose own
setting was used instead of `f`'s. So `f(x)`, `f(x...)` and `f(x; k)` could
infer differently for the same argument types, in either direction.
`abstract_apply` no longer takes or forwards a `max_methods` value and lets
`abstract_call` resolve it for each splatted callee, and that resolution
now looks through `Core.kwcall` to the function it calls.
In Base, the only inference results this changes are `print` splats in
`printstyled` and stacktrace printing, whose return values are unused.
Assisted-by: Claude Code (Opus 5.5)
---
* inference: respect function-level `@max_methods` in `applicable`
resolve `max_methods` for the signature `applicable` looks up, like `abstract_apply` does, so `applicable(f, x...; kw...)` uses `f`'s setting
Assisted-by: Claude Code (Opus 5.5)