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

Bug: http://d.puremagic.com/issues/show_bug.cgi?id=10517
Boards: http://forum.dlang.org/thread/odkkhkgnahhpklvumghv@forum.dlang.org

Note that the old code is considered "accepts-invalid", and is now simply illegal (no deprecation) (per Steven Schveighoffer's recommendation on Boards).

Also templatizes global readln.

Fixes a wchar issue

On topic: Is there a cleaner way to say `isMutableChar!C` or `isMutableString!S`?

Semi on topic: We have no "range terminator" signature that returns a string, eg:

```D
string s = stream.readln("<br />");
```

I wanted to add it, but we can't due to ambiguity with buffered readln, which is a shame...