Detangle Slice and fix mixed-dimension in-place reductions (#28941)
* Detangle Slice between whole dimensions and axes
We use axes in many downstream computations that may not re-index directly into the original array, so we add a second type parameter to `Slice` that is turned on when converting `:` in indexing expressions -- and really only `SubArray` cares about.
* Reduce allocations for in-place reductions and fix mixed-dimensionality edge-cases
Alleviates #28928 but does not completely remove allocations due to the allocation of the view that gets passed to `map!`.
* Introduce a whole new IdentityUnitRange
that we will encourage offset array implementations to use instead of Base.Slice
* Test that maximum! allocates less