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
C new-cog: unstatic readonly and certain internal XSLoader pvs

Our own implementation of evaled XSLoader::load needs dynamic strings.

Still failing -O3 tests: 12(new), 75,91,95,125,143,152,159,166(new),185,188
so it fixed: 15,27,29,41-45,49,68,90,103,150
and broke: 12,166
C new-cog: unify constpv and savepv, use len=0 for static

IsCOW pvs are now cur+2, !IsCOW static or shared_hek: len=0
unstatic all PV pads also.

Failing tests: 12,42,43,74,75,95,125,143,152,159,166,185,188,200
C: new-cog. Disable -O3 const_strings for curpad syms

Fixes -O3 tests: 12
Already fixed before: 138,141
Still failing -O3 regressions: 42,43,74,125,200