Handle non-dispatch tuples in `Base.method_instance`
`method_instance` conceptually does the same thing as `method_instances`
(finding a matching method and specializing it), but uses the dispatch
cache when possible. Previously it always went through
`jl_method_lookup_by_tt`, which calls `jl_mt_assoc_by_type` — a
function that asserts its input is a dispatch tuple. For non-dispatch
tuples (e.g. abstract argument types like
`Tuple{typeof(+), Any, Int64}`), fall back to the same uncached
`_methods_by_ftype` + `specialize_method` path that `method_instances`
uses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>