Remove some redundant magical flag checks

Now that gmagical svs use the OK flags the same way as muggles,
things like SvPOK || (SvGMAGICAL && SvPOKp) are no longer necessary.
[perl #113940] Make make_ext delete Makefiles when version changes

This eliminates this annoyance:

$ ./perl -Ilib -MStorable -e0
Storable object version 2.37 does not match bootstrap parameter 2.38 at lib/XSLoader.pm line 95.
Compilation failed in require.
BEGIN failed--compilation aborted.
pad.c: document cv_forget_slab
Make undef &foo remove call checkers

The fact that the call checker is stored in magic is an implementation
detail.  cv_undef does not free magic, so the call checker lives on.

If we were to move the parameter prototype into magic internally, we
would not want undef to stop clearing it.  To me, the current situa-
tion with call checkers is similar.
perldelta for undef(&foo) and call checkers
Revert "Use $^S instead of caller in splain"

This reverts commit 019070c31184a4deb57cb85f7e597a789c6c5b54.

I misunderstood $^S, and thought I could simplify the code.  Contrary
to what perlvar says, $^S is undefined not only during compilation of
an eval or module, but also during compilation of the main program.
Revert "Increase $diagnostics::VERSION to 1.31"

This reverts commit c369a25dcc5e5c5b627a50d1c4b73c2be0b926b9.

I have just reverted the only other change to diagnostics.pm
since 5.17.2.
diagnostics.t: Test BEGIN{die}
perlvar: Correct $^S’s description
Fix C pre-processor expression in Dumper.xs

Commit 153920a10f425609 added a second condition to an #ifdef in Dumper.xs,
but didn't change the #ifdef to #if defined. Clearly gcc can cope with the
resulting non-conformant pre-processor expression, but pickier compilers
(such as HP's) reject it. Re-write it in a way that everything accepts.
Split __declspec(dllimport,noreturn) into 2 parts

I thought I did test commit 12a2785c with VC6 and it built without
errors, but I can no longer reproduce this.  Checking standard
CRT headers shows common usage (e.g. for longjmp() in setjmp.h) is
"__declspec(dllimport) __declspec(noreturn)", so let's use that
one instead.
Add MSVC noreturn to inside of the interp

12a2785c7e86f586a05cad9ff90ce673c68c3115 only turned on MSVC noreturn for
external DLL XS modules, not inside the interp (perl5**.dll). This commit
fixes that. For me (bulk88), with an -O1 build, perl517.dll dropped
from 1044KB to 1036KB after applying this.
Add PERL_NO_GET_CONTEXT to Win32CORE

Win32CORE is already ithreads aware, but was still making
Perl_get_context calls. This fixes that. Smaller machine code is the result.
Remove -x permission from win32/win32.h

No idea why one of my previous commits added the bit.  I blame
Cygwin git and the fact that t/porting/exec-bit.t is skipped
on Windows.
Correct skip count in magic.t after 613c63b465.
Most magic.t tests can actually run on VMS.

Only the one that clears %ENV is a problem.
scope.c: Don’t stringify globs on scope exit

This is a waste:

	    /* Can clear pad variable in place? */
	    if (SvREFCNT(sv) <= 1 && !SvOBJECT(sv)) {
		/*
		 * if a my variable that was made readonly is going out of
		 * scope, we want to remove the readonlyness so that it can
		 * go out of scope quietly
		 */
		if (SvPADMY(sv) && !SvFAKE(sv))
		    SvREADONLY_off(sv);

		if (SvTHINKFIRST(sv))
		    sv_force_normal_flags(sv, SV_IMMEDIATE_UNREF);

We can simply drop the globness in sv_force_normal instead of flatten-
ing globs to strings.  The same applies to COWs.  The SV_COW_DROP_PV
flag accomplishes both.

Before and after:

$ time ./miniperl -e 'for (1..1000000) { my $x = *foo }'

real	0m2.324s
user	0m2.316s
sys	0m0.006s
$ time ./miniperl -e 'for (1..1000000) { my $x = *foo }'

real	0m0.848s
user	0m0.840s
sys	0m0.005s
Increase $Storable::VERSION to 2.38
Storable: doc typos
Storable.xs: Add comments to store_scalar concerning utf8