Change string-read semantics so that reading nothing leaves the original value unmodified.
Logically revert #8cffa4f21, and apply the change onto work done since.
At cstring layer, libcfa change is a simplification, and test suite change is merely a different expectation.
At var-len-string layer, libcfa change is a patch to enable detecting the nothing-read case,
and test sute change (shows the different expectation but also) puts a similar patch into its "stop trying if nothing read" loop exits.