Fix Issue 13856 - std.stdio.readln stomps arrays

This avoid interference of readln with standard arrays.
It also avoids an allocation when passing a stack allocated buffer that is large enough to hold the line.

https://issues.dlang.org/show_bug.cgi?id=13856
I think this test is wrong. This will `assumeSafeAppend` to any buffer that wasn't fully extended to capacity. Thus, if you re-used the buffer, in the next call, you would have a capacity of 0.

What you need is, if you had to extend the buffer, then you can `assumeSafeAppend`.

I think the test should be `if(pos > buf.length)`