Use inout for ref returning members in std.container.array

For motivation see 

http://forum.dlang.org/thread/agyeejbrpotpjrecepyl@forum.dlang.org#post-wysehvbsfnezfozsagpl:40forum.dlang.org
Removing inout from

```D
Range opSlice() inout
```

makes unittest fail as

```
array.d(860,15): Error: None of the overloads of 'opSlice' are callable using a const object, candidates are:
array.d(430,11):        std.container.array.Array!int.Array.opSlice()
array.d(443,11):        std.container.array.Array!int.Array.opSlice(ulong i, ulong j)
```

It seems it has some effect on the `Range` constructor.

I'm not sure how to go forward with this.

Is this really worse than we had before this was merged?