Aggressive constprop in the PermutedDimsArray constructor (#54926)
After this, the return type in the `PermutedDimsArray` constructor is
concretely inferred for `Array`s if the permutation is known at compile
time:
```julia
julia> @inferred (() -> PermutedDimsArray(collect(reshape(1:8,2,2,2)), (2,3,1)))()
2×2×2 PermutedDimsArray(::Array{Int64, 3}, (2, 3, 1)) with eltype Int64:
[:, :, 1] =
1 5
3 7
[:, :, 2] =
2 6
4 8
```
This should address the second concern in
https://github.com/JuliaLang/julia/issues/54918