Add `_unsetindex!` methods for `SubArray`s and `CartesianIndex`es (#53383)
With this, the following (and equivalent calls) work:
```julia
julia> copyto!(view(zeros(BigInt, 2), 1:2), Vector{BigInt}(undef,2))
2-element view(::Vector{BigInt}, 1:2) with eltype BigInt:
#undef
#undef
julia> copyto!(view(zeros(BigInt, 2), 1:2), view(Vector{BigInt}(undef,2), 1:2))
2-element view(::Vector{BigInt}, 1:2) with eltype BigInt:
#undef
#undef
```
Close https://github.com/JuliaLang/julia/issues/53098. With this, all
the `_unsetindex!` branches in `copyto_unaliased!` work for
`Array`-views, and this makes certain indexing operations vectorize and
speed-up:
```julia
julia> using BenchmarkTools
julia> a = view(rand(100,100), 1:100, 1:100); b = view(similar(a), axes(a)...);
julia> @btime copyto!($b, $a);
16.427 μs (0 allocations: 0 bytes) # master
2.308 μs (0 allocations: 0 bytes) # PR
```
Improves (but doesn't resolve)
https://github.com/JuliaLang/julia/issues/40962 and
https://github.com/JuliaLang/julia/issues/53158
```julia
julia> a = rand(40,40); b = rand(40,40);
julia> @btime $a[1:end,1:end] .= $b;
5.383 μs (0 allocations: 0 bytes) # v"1.12.0-DEV.16"
3.194 μs (0 allocations: 0 bytes) # PR
```
ƒ
Co-authored-by: Jameson Nash <vtjnash@gmail.com>