Fix Issue 10517 - readln(Char)(Char[] buf) accepts non-mutable buffers

Also templatizes a global readln
Fix wchar/dchar issue

Just cause a file is nativelly treated as UTF16 (or something), doesn't mean you can iterate wchars.
Improve iteration scheme for wchar/dchar
Improve restraints for readln
Merge pull request #1381 from monarchdodra/readln

 Fix Issue 10517 - readln(Char)(Char[] buf) accepts non-mutable buffers