First failing try
Yet another try
More isMutable guards
Apply fix: make Array.Range a type again
use the proper element type instead of T

T misses A's qualifiers which are needed. E has them. This means,
const/immutable are taken over from A automatically. This allows inout
to be used on front/back/opIndex. inout doesn't work for opSlice, but the
isMutable!A guard can be dropped.

move*, opSliceAssign, etc would be strictly fine with T, but to avoid
confusion I think it's better to not use T in Range at all.
Add reference to Issue 13629
Remove template argument from return of RangeT.opSlice
Move RangeT to global scope
Implement Sorted akin to BinaryHeap