prevent SEGV from buffer read overrun, and refactor away duplicated code

The split patch introduced a buffer read overrun error in sv_dump() when
stringifying empty strings. This bug was always existant but was probably
never triggered because we almost always have at least one extflags set,
so it never got an empty buffer to show. Not so with the new compflags. :-(
eliminate the only internal uses of HvFILL

The usages are as far as I know incorrect anyway. We resize
the hash bucket array based on the number of keys it holds,
not based on the number of buckets that are used, so this
usage was wrong anyway.

Another bug that this revealed is that the old code would allow
HvMAX(hv) to fall to 0, even though every other part of the
core expects it to have a minimum of 7 (meaning 8 buckets).

As part of this we change the hard coded 7 to a defined constant
PERL_HASH_DEFAULT_HvMAX.

After this patch there remains one use of HvFILL in core, that used
for scalar(%hash) which I plan to remove in a later patch.
Exporter on CPAN is 5.68 make blead reflect this
makedef.pl shouldn't prepend Perl_ to symbols already starting with Perl_.

In the next patch, I have Perl_croak_memory_wrap defined in embed.fnc with
the 'nroX' flags, since this is a private function used by public macros.
I used the long form of the name Perl_croak_memory_wrap everywhere, and
used the 'o' flag so that embed.h wouldn't contain a useless #define
croak_memory_wrap Perl_croak_memory_wrap.  Unfortunately, makedef.pl
(used by the Win32 build process) didn't know what to do with that entry
and created an entry Perl_Perl_croak_memory_wrap.   Changing makedef.pl
to use the 'o' flag to decide whether to add the Perl_ prefix resulted
in over 50 other symbols changing in the output of makedef.pl.  I don't
know if the changes are correct or if the 'o' flag is in error on those
entries in embed.fnc, but I don't have time to check them all out.

This patch just stops makedef.pl from adding a Perl_ prefix if there is
already one there.
Remove the non-inline function S_croak_memory_wrap from inline.h.

This appears to resolve these three related tickets:

    [perl #116989] S_croak_memory_wrap breaks gcc warning flags detection
    [perl #117319] Can't include perl.h without linking to libperl
    [perl #117331] Time::HiRes::clock_gettime not implemented on Linux (regression?)

This patch changes S_croak_memory_wrap from a static (but not inline)
function into an ordinary exported function Perl_croak_memory_wrap.
This has the advantage of allowing programs (particuarly probes, such
as in cflags.SH and Time::HiRes) to include perl.h without linking
against libperl.  Since it is not a static function defined within each
compilation unit, the optimizer can no longer remove it when it's not
needed or inline it as needed.  This likely negates some of the savings
that motivated the original commit 380f764c1ead36fe3602184804292711.
However, calling the simpler function Perl_croak_memory_wrap() still
does take less set-up than the previous version, so it may still be a
slight win.  Specific cross-platform measurements are welcome.
Fix perlfunc.pod to reflect changes to split " " logic
improve hash related documentation in perlfunc and perlsec to reflect new hash randomization logic
handy.h: Remove docs for non-existent macro

In commit 3c3ecf18c35ad7832c6e454d304b30b2c0fef127, I mistakenly added
documentation for a non-existent macro.  It turns out that only the
variants listed for that macro exist, and not the base macro.  Since we
are in code freeze, the solution has to be not to change code by adding
the base macro, but to delete the documentation, or change it to refer
to just the existing versions.  In order to not cause an entry that is
anomalous to the others, for this release, I'm just getting rid of the
documentation.