fix LockingTextReader: issues 13686 and 12320

[Issue 13686 (Reading unicode string with readf ("%s") produces a wrong
string)](https://issues.dlang.org/show_bug.cgi?id=13686) is fixed by reading all chars of a multibyte sequence and decoding.
Before, each char was mistaken for a dchar.

[Issue 12320 (std.stdio.LockingTextReader populates .front in .empty)](https://issues.dlang.org/show_bug.cgi?id=12320) is
fixed by moving the work from empty to popFront.
Yep, just to drive the point home, this is from that article too:

> In November 2003, UTF-8 was restricted by RFC 3629 to end at U+10FFFF, in order to match the constraints of the UTF-16 character encoding. This removed all 5- and 6-byte sequences, and about half of the 4-byte sequences.