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
> Is this really worse than we had before this was merged?

Yes:
```d
const arr = make!Array(1, 2, 3);
arr[][0] = 42; // mutated through a const reference...
writeln(arr[]); // [42, 2, 3]
```
There's no nice solution to the problem of getting head-mutable ranges for non-mutable containers.

For slices, `const(T[])` can be implicitly converted to `const(T)[]`, but there's no equivalent for user-defined types (`const(MyRange!T)` to `MyRange!(const T)`).