[perl #117855] Store CopFILEGV in a pad under ithreads

This saves having to allocate a separate string buffer for every cop
(control op; every statement has one).

Under non-threaded builds, every cop has a pointer to the GV for that
source file, namely *{"_<filename"}.

Under threaded builds, the name of the GV used to be stored instead.

Now we store an offset into the per-interpreter PL_filegvpad, which
points to the GV.

This makes no significant speed difference, but it reduces mem-
ory usage.
Prevent __FILE__ corruption when ${"_<..."} is modified

This fixes a longstanding bug under non-threaded builds that was
extended to threaded builds by the previous commit.

Modifying the SV slot of the file gv can cause CopFILE to violate
memory discipline, giving random strings.

Since the GV is named after the file, too, and since its name can-
not be changed from Perl space, use that for CopFILE instead.
toke.c:incline: Move code into the block that uses it

Setting up the values of these variables is pointless if we are not
going to be using them.  They are only used inside the ‘if’ block that
this patch moves them into.
Make eval "#line" account for ${"_<foo"} changes

If a BEGIN block in the eval modifies the ${"_<foo"} scalar where
‘foo’ is the file name in the eval, then subsequent #line directives
that change the file name won’t cause the lines to be copied to
@{"_<newname"}.  (This copying usually happens under the debugger.)

Just use the name of the GV itself, rather than CopFILESV, since the
GV name cannot be changed from Perl space.
toke.c:incline: Don’t stringify a GV to look it up

If we already have the GV, there is no need to stringify it and then
look it up again.
toke.c:incline: Avoid duplicate symbol lookup

If we have already looked up the GV for *{"_<newfilename"}, we
can set CopFILEGV to that instead of having CopFILE_setn look it
up itself.
toke.c: s/below/above/

The condition this refers to was moved in commit 4efe39d21.
Test that ss_dup handles all savestack items

It is far too easy to overlook it when adding new savestack types.
Handle SAVEt_ADELETE in ss_dup

c68ec7a9f95 added SAVEt_ADELETE without adding it to ss_dup.
Handle SAVEt_READONLY_OFF in ss_dup

20d5dc239d1 added SAVEt_READONLY_OFF without adding it to ss_dup.
Remove SAVEt_STACK_CXPOS

81ed78b25c4b removed the only use of this.
op.c: correct comment
op.c:aassign_common_vars: merge duplicate code

We are just asking for bugs to creep in by repeating it like this.
Don’t use CopFILESV for ‘once’ warnings

CopFILESV points to ${"_<filename"}, which can be modified by Perl
code.  Under non-threaded builds, newGP (which records the file name
used by ‘used once’ warnings) was using CopFILESV for the file name.
It is safer just to use the name of the GV itself.
op.c:newCONSTSUB: Stop using CopFILESV for CvFILE

CopFILESV points to *{"_<filename"}, which can be modified
from perl space.  CopFILE points to the third character of
*{"_<filename"}{NAME}.

Ithreads were already using CopFILE.  Make non-threaded builds do the
same.  This makes things a little more robust.

CvFILE is not actually used anywhere as far as I can tell, so I cannot
easily test this.