Improve type-inference in complex eigen (#52290)
Indexing using integers instead of a `Vector` uses constant-propagation
to improve the inferred return types. After this, the return type of
`eigen(::Matrix{ComplexF64})` is inferred as a small union.
```julia
julia> @code_typed eigen(rand(ComplexF64,2,2))
CodeInfo(
1 ─ %1 = invoke LinearAlgebra.:(var"#eigen#94")(true::Bool, true::Bool, LinearAlgebra.eigsortby::typeof(LinearAlgebra.eigsortby), #self#::typeof(eigen), A::Matrix{ComplexF64})::Union{Eigen{ComplexF64, ComplexF64, Matrix{ComplexF64}, Vector{ComplexF64}}, Eigen{ComplexF64, Float64, Matrix{ComplexF64}, Vector{Float64}}}
└── return %1
) => Union{Eigen{ComplexF64, ComplexF64, Matrix{ComplexF64}, Vector{ComplexF64}}, Eigen{ComplexF64, Float64, Matrix{ComplexF64}, Vector{Float64}}}
```
Close #52289