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
I'm not sure how this compiles at all... How does the compiler transform an `inout` to a non-inout when mutable indirection is present? This compiles for me:
```D
void main()
{
    const Array!(int*) a;
    writeln(typeof(a  .front).stringof); //const(int*)
    writeln(typeof(a[].front).stringof); //int*
}
```
That's just wrong...