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.