Fewer strEQ calls in toke.c:S_new_constant

There is a small fixed number of keys that can be passed to this
static function:

charnames
binary
float
integer
q
qr

In a few places, we check whether the key is "charnames".  It would
be quicker just to check the first character, since, if it is 'c', the
key must be "charnames".  (Under debugging builds, assert that that
assumption is true.)
MANIFEST typo
toke.c: Make _charnames check more robust

Assuming that $^H{charnames} exists and contains a code ref can result
in crashes.  See the tests in the diff.

It’s not a good idea to do $INC{"_charnames.pm"}++, but perl still
shouldn’t crash.
perldiag: s/about where/whereabouts/

Every time I see that ‘about where’ I wonder why it sounds so funny.
It just dawned on me that we should just use the word ‘whereabouts’,
which fits perfectly in this context, and doesn’t sound as though it
needs a rewrite.
perldiag: Make Constant(%s) messages match reality

We no longer have an ‘in regex’ variant (if we ever did).

The Constant(%s)%s: %s represents three specific warnings, one of
which doesn’t have the colon any more.  It’s clearer if we list all
three, especially since the one about returning undef can acciden-
tally happen with ‘normal’ code (as opposed to code that fiddles with
%^H entries it shouldn’t be touching).
Test error when constant overload handler returns undef
Test ‘Constant(%s) unknown’ error

This only happens if someone accidentally (or intentionally :-) unde-
fines %^H or *^H or stops charnames from loading.
Change Constant(undef) error to something meaningful

Look at these errors:

$ perl5.16.0 -e 'use overload; BEGIN{overload::constant q => sub{}; } "aaa"'
Constant(q): Call to &{$^H{q}} did not return a defined value at -e line 1, near "} "aaa""
Execution of -e aborted due to compilation errors.

$ perl5.16.0 -e 'BEGIN{++$_ for @INC{<charnames.pm _charnames.pm>}} "\N{a}"'
Constant(\N{a}) unknown at -e line 1, within string
Execution of -e aborted due to compilation errors.

$ perl5.16.0 -e 'use overload; BEGIN{overload::constant q => sub{}; } tr"aaa""'
Constant(tr): Call to &{$^H{q}} did not return a defined value at -e line 1, within string
Execution of -e aborted due to compilation errors.

The (q) and (tr) might seem a bit odd, but are not completely meaning-
less.  They match the third argument passed to the overload handler.
Now look at this:

$ perl5.16.0 -e 'use overload; BEGIN{overload::constant integer => sub{}; } 123'
Constant(undef): Call to &{$^H{integer}} did not return a defined value at -e line 1, at end of line
Execution of -e aborted due to compilation errors.

$ perl5.16.0 -e 'use overload; BEGIN{overload::constant float => sub{}; } 1.23'
Constant(undef): Call to &{$^H{float}} did not return a defined value at -e line 1, at end of line
Execution of -e aborted due to compilation errors.

$ perl5.16.0 -e 'use overload; BEGIN{overload::constant binary => sub{}; } 0x123'
Constant(undef): Call to &{$^H{binary}} did not return a defined value at -e line 1, at end of line
Execution of -e aborted due to compilation errors.

That Constant(undef) is not helpful.  This commit changes it to show
the number itself, making these cases similar to \N{}.
Stop Constant(%s) errors from leaking

This error message uses yyerror, so it doesn’t abort immediately, but
adds it to the queue of error messages.

If there are ten accumulated errors, however, yyerror croaks with a
‘too many errors’ message.

In that circumstance these messages were leaking scalars.

Instead of creating an SV especially to hold the message to pass to
yyerror and then freeing it afterwards, we can instead use Perl_form,
which reuses the same SV every time (PL_mess_sv), eliminating that
leak.  In doing so, we can also combine this with another yyerror/
return in the vicinity, avoiding duplicate code.

The sv passed to S_new_constant was also leaking.  When there is no
error, it is currently mortalised.  When there is an error, it also
needs to be mortalised, in case it is a fatal error.  So this commit
changes it to mortalise it unconditionally.  This means we have to
SvREFCNT_inc the return value on error.
toke.c:S_new_constant: Use NN SvREFCNT_inc in 2 places

The sv argument passed to new_constant is never null.  If the function
it calls is naughty enough to push a null on the stack, new_constant’s
callers will crash anyway.  So we can assume res is not null.

This eliminates needless null checks.
Stop invalid charnames from leaking

The tests I added earlier were failing for a different reason than the
test names suggested.

Invalid charnames are not leaking because of the ‘too many errors’
that yyerror croakingly utters, but are leaking even when yyerror
doesn’t croak.

S_get_and_check_backslash_N_name just needs to free the returned SV
before returning if it is undefined.
leakfinder.pl: Fix select skip

It wasn’t skipping select without parentheses, which was the purpose
of that (?:...) group.
leakfinder.pl: Skip push/unshift after { or (
Suppress deprec. warning from Devel::PPPort’s tests

This has already been submitted to
<https://rt.cpan.org/Ticket/Display.html?id=81796>.