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.
It just looked silly to me, blank lines in such tiny blocks (same below at line [2636](https://github.com/D-Programming-Language/phobos/pull/2663/files#diff-7945921c543e1ab7460797aeb759d7c5L2636)).

But if you like it better with blank lines, I can change it back, of course.