Fix Issue 12556 - Add persistent stdio.File.byLine

https://issues.dlang.org/show_bug.cgi?id=12556

Add `stdio.File.byLineCopy`, which uses `ByLineImpl` internally.

* By default, lines are immutable. This can be changed by using a mutable `Char` type.
* `ByLineCopyImpl.front` is cached to avoid unnecessary allocations.
* The API follows `byLine` for consistency.
I just copied the style from byLine. It's quite common in algorithm.d to have the opening bracket on column 0. Anyway, I indented the runtime args as suggested, but kept the constraint unindented - this is more in keeping with stdio.d IMO. Less line breaks would exceed the soft limit of 80, so I prefer it like this.