Better fix for #119529

<$fh> used to loop if $fh was opened to an in-memory handle containing
a reference.

Commit 552908b174 fixed the loop by forcing a reference to a string
when the handle was created.  It did not take into account that the
reference might be read-only.  It was also insufficient, in that
the target scalar could be set to a reference after the handle
was created.

The real reason it was looping was that the code for returning and
setting the size of the buffer was not handling non-PVs properly
(unless they were globs, which were special-cased).  It might return
0, and it might not, depending on what the internal SV field hap-
pened to hold.

This caused looping under 5.12 and onwards, but even in 5.10 <$fh>
returned nothing.

In this case, deleting code makes things just work.

Reverting the hunk from 552908b174 stops appending to refs from work-
ing, so I tweaked PerlIOScalar_pushed to fix that (which also reduced
the amount of code).
Increase PerlIO::scalar::VERSION to 0.18
t/porting/dual-life.t: Another exception

In parallel testing, it might fail on files like
cpan/Module-Metadata/MB-9dzadSLU/Simple/bin/simple.plx.
Make sure truncated in-memory files have trailing null

Just spotted this....

If the target scalar contains something already, then setting SvCUR to
0 is not sufficient.