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 get that now, I was misunderstanding it.

At the same time, I don't know if it's OK to do this. It's ok to `assumeSafeAppend` to data that was never seen before this, but not data that may have other aliases.

I think it's OK to leave it the way you have it. In most cases, once you pass in a buffer, it is kind of "owned" by readln.