fix LockingTextReader: issues 13686 and 12320

Issue 13686 (Reading unicode string with readf ("%s") produces a wrong
string) 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) is
fixed by moving the work from empty to popFront.