new-cog: start working on #141: $] >= 5.017006

-O3 adds -fcog, which sets most pvs to SvLEN=0 as static pv
But static pv are only valid since cd84013aab030da47b76a44fb3
(sv.c: !SvLEN does not mean undefined)
i.e. since v5.17.6, because a conversion to IV would fail.

Exception: Only a readonly "" or "0" string can have SvLEN=0 since it's
converted to 0, which leads to the same result.

perlcc -O3 -r -e'print "ok" if 1 == "1"'
vs
perlcc -O2 -r -e'print "ok" if 1 == "1"'
ok
C,CC: disable -fcog, replace by -fconst-strings

refactor save_pv_or_rv to return if static
handle shared_hek, READONLY and #141 (!SvLEN in 2iv) in save_pv_or_rv only
Even static_free and SvFAKE_off post handling.

Unify all PV handling code to use just save_pv_or_rv()
move %optimization_map up, the the global init.
CC: replace -fcog by -fconst_strings, even with >5.10 (does not work yet)

POD: -fcog is now ignored and reserved for a future working IsCOW (5.22 maybe)
CC: fix IO::*::DESTROY in global cleanup

Ensure a cv->START->op_next exists for
S_curse: CvSTART(destructor)->op_next->op_type