Allow CORE::GLOBAL:: subs in general to be aliased to consts

$ perl5.8.8 -e 'use constant foo=>1; BEGIN { *{"CORE::GLOBAL::time"} = \&{"foo"};1} warn time'
1 at -e line 1.
$ perl5.10.1 -e 'use constant foo=>1; BEGIN { *{"CORE::GLOBAL::time"} = \&{"foo"};1} warn time'
1383661397 at -e line 1.

When the storage of constants was optimised in perl 5.10, the code that
checks for global overrides was not updated to account.
Fix readline overriden with a constant

<> doesn’t take into account that some subs are stored in a more
lightweight form than usual.  These two programs should behave the
same way, but, as you can see below the __END__ markers, the output is
different:

use constant foo=>1;
BEGIN { *{"CORE::GLOBAL::readline"} = \&{"foo"}; 1}
warn <a>
__END__
Warning: something's wrong at - line 3.

use constant foo=>1;
BEGIN { *{"CORE::GLOBAL::readline"} = \&foo; 1}
warn <a>
__END__
Too many arguments for main::foo at - line 3, at end of line
Execution of -e aborted due to compilation errors.

The latter is the correct behaviour.  The only different is \&{"foo"}
vs \&foo, the first of which triggers an optimisation.

S_scan_inputsymbol in toke.c needs to take the optimisation into
account (that stash entries are not necessarily globs but can be
upgraded to such).
Put common override code into gv_override

When I moved the three occurrences of this code in op.c into a static
function, I did not realise at the time that it also occurred thre
etimes in toke.c.

So now it is in a new non-static function in gv.c.

Only two of the instances in toke.c could be changed to use this func-
tion, as the otherwise is a little different.  I couldn’t see a simple
way of factoring its requirements in.
toke.c: Remove unnecessary UTF check

In this particular branch, the value of PL_tokenbuf will always
be a built-in keyword; i.e., pure ASCII.  So there is no need to
do a utf8 check.
gv.c:gv_try_downgrade: Use hv_fetchhek

Unlike hv_fetch, this also passes the precomputed hash, saving
hv_common from having to recalculate it.
Split ck_open into two functions

It is used for two op types, but only a small portion of it applies
to both, so we can put that in a static function.  This makes the
next commit easier.
Fix qx, `` and <<`` overrides

This resolves two RT tickets:
• #115330 is that qx and `` overrides do not support interpolation.
• #119827 is that <<`` does not support readpipe overrides at all.

The obvious fix for #115330 fixes #119827 at the same time.

When quote-like operators are parsed, after the string has been
scanned S_sublex_push is called, which decides which of two paths
to follow:
1) For things not requiring interpolation, the string is passed to
   tokeq (originally called q, it handles double backslashes and back-
   slashed delimiters) and returned to the parser immediately.
2) For anything that interpolates, the lexer enters a special inter-
   polation mode (LEX_INTERPPUSH) and goes through a more complex
   sequence over the next few calls (e.g., qq"a.$b.c" is turned into
  ‘stringify ( "a." . $ b . ".c" )’).

When commit e3f73d4ed (Oct 2006, perl 5.10) added support for overrid-
ing `` and qx with a readpipe sub, it did so by creating an entersub
op in toke.c and making S_sublex_push follow path no. 1, taking the
result if tokeq and inserting it into the already-constructed op tree
for the sub call.

That approach caused interpolation to be skipped when qx or `` is
overridden.  Furthermore it didn’t touch <<`` at all.

The easiest solution is to let toke.c follow its normal path and
create a backtick op (instead of trying to half-intercept it), and
to deal with override lookup afterwards in ck_backtick, the same way
require overrides are handled.  Since <<`` also turns into a backtick
op, it gets handled too that way.