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
> 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)).

Well ConstRange works, or look at how @IgorStepanov solved the problem for AA ranges.
https://github.com/D-Programming-Language/druntime/pull/934/files#diff-637199f264ca6ac7576e9d9c5a3420ceR634
It's still a kludge.
One possible solution might be to make `Range!(inout(int)) opSlice() inout` work properly.
Also it should be possible to add an implicit conversion (using alias this) from `const(MyRange!T)` to `MyRange!(const(T))`.