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

Don't remove it, add an extra one:
```D
inout(Range) opSlice() inout
{
    return inout(Range)(this, 0, length);
}
```

> Is this really worse than we had before this was merged?

Having run-time undefined behavior is worst than a compile error, IMO, yes.

Honestly, containers and const mixing is a known problem. Let's just add stuff that is know to be correct for now.