C,CC: new-cog. disable -fcog, replace by -fconst-strings

start working on #141:
-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

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)

Failing tests (14.4.4d-nt t/testc.sh -O3 -c -q)
  15,27,29,41-45,49,68,75,90,91,95,103,125,143,150,152,159,185,188
vs release: 75,95, 138,141 (new-cog), 143,150,152,159,185,188