Remove ‘Runaway prototype’ warning

This has been here since commit 8472ac73d, which was merged into blead
in commit 55d729e4e15, if I understand the history correctly.

This warning is undocumented, and triggerable only by stash
manipulation.

It appears to be an internal check, similar to a ‘panic’ error, but
its wording doesn’t suggest anything of the sort.

A ‘sub foo;’ declaration doesn’t actually create the sub yet, but
simply puts -1 in the stash element.  ‘sub foo($);’ puts '$' in the
stash element.

If newATTRSUB sees something there it doesn’t recognise, it unhelp-
fully carps ‘Runaway prototype’, but it is pretty random:

This is OK:

$ perl -e 'BEGIN{$::{foo}=undef} sub foo;'

But this is not:

$ perl -e 'BEGIN{$::{foo}=-1; $::{foo}=undef} sub foo;'
Runaway prototype at -e line 1.

Also, it only happens when the sub has no body, not for ‘sub foo {}’:

$ perl -e 'BEGIN{$::{foo}=56} sub foo{}'
$ perl -e 'BEGIN{$::{foo}=56} sub foo;'
Runaway prototype at -e line 1.

This warning is random, incomprehensible, and not at all helpful, so
we should just remove it.
Don’t clone closures in rv2cv

Commit 07055b4c536 (Support named closures) added code to make refer-
encing a closure prototype clone the prototype.  Commit 28757baaaeaa
(inseparable changes from patch from perl5.003_19 to perl5.003_20),
which includes ‘Subject: Rescind named closures’ in its log, appar-
ently did not rescind ‘named closures’ completely, leaving a line of
code that was completetly unused and untested, until just now when I
tried doing something bizarre to see whether some other piece of code
was buggy.  This wasn’t what I expected. :-)

$ ./perl -Ilib -e 'sub MODIFY_CODE_ATTRIBUTES{\&{$_[1]};} my $x; +sub :bar{$x}'
Assertion failed: (depth || SvTYPE(proto) == SVt_PVFM), function Perl_cv_clone, file pad.c, line 1890.
Abort trap
Delete the contents of pp_study
Correct apidoc varnames for util.c:fbm_instr
Remove most code conditional on SvSCREAM

Since pp_study is now a no-op, SvSCREAM should always be false on
non-GVs, except for the method name hack.
Gut screaminstr

How did this ever end up in the API?

Anyway, this commit guts it by removing its guts and replacing it with
a panic message.  This function would fail assertions if passed an
unstudied scalar, so it should never be called any more.  But XS mod-
ules that still do if (SvSCREAM(sv)) screaminstr(...) should still be
able to compile.
Expunge study magic

I’m running out of synonyms for ‘remove’.
Away with REXEC_SCREAM!

Actually, we cannot remove the definition, as there are CPAN modules
that need it; but they only test the flag, and never set it, so perl
doesn’t need to keep testing it itself.
Use isGV_with_GP in util.c:fbm_compile

This little statement:

    if (SvSCREAM(sv))
	return;

filters out not only studied strings, but also GVs.

Since studied strings are gone, it only filters out GVs now.  Since
fbm_compile coerces its argument, we still want to filter out GVs, so
we use isGV_with_GP to make the intent clear.
Delete two instance of SvSCREAM_off

that no longer have any effect.
sv.h: Document the only use of SvSCREAM

Now that studied scalars are gone, SvSCREAM is used only for the DOES
method name hack, so update sv.h accordingly.
[Merge] Yank study

study was made a no-op in 5.16, but the code was left in place,
unused.  This branch removes the code implementing study, leaving
pp_study and screaminstr as stubs.