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.
std.algorithm binaryFun unification

The reason is to do not compile two variants:
“a == b” and “a==b”.
remove SimpleSlice as it is marked don't use since last edit in 2009
Merge pull request #2663 from aG0aep6G/lockingtextreader

fix LockingTextReader: issues 13686 and 12320
std.array.replaceFirst didn't work with variable length strings

* also added doc unittest

moved import into static ifs
Merge pull request #2699 from burner/remove_SimpleSlice

remove SimpleSlice as it is marked don't use since last edit in 2009
Merge pull request #2698 from 9il/func

std.algorithm binaryFun unification
std.range.constraints & std.array cleanup

use static import

rm static
Merge pull request #2703 from burner/std_array_replaceFirst_utf_fix

std.array.replaceFirst didn't work with variable length strings
Merge pull request #2701 from 9il/ar

std.range.constraints & std.array code/import swap
new std.array.replaceLast

moved string imports into static if

worked in some review