Abolish STRANGE_MALLOC. Now all malloc()s are considered strange :-)

STRANGE_MALLOC was added in 5.002 beta 1 (4633a7c4bad06b47) as part of an
work around for typical mallocs, which had a bad interaction with perl's
allocation needs. Specifically, repeatedly extending an array and then
creating SV heads (such as when reading lines of a file into an array)
could end up with each reallocation for the array being unable to extend in
place, needing a fresh chunk of memory, and the released memory not being
suitable for use as more SV heads, so sitting unused. The solution was for
perl to recycle the old array body as SV heads, instead of returning it to
the system, passing the memory from the the AV code to the SV code using
offer_nice_chunk(), PL_nice_chunk and PL_nice_chunk_size.

STRANGE_MALLOC was actually a signal that the malloc() didn't need
protecting from itself, and to disable the work around.

offer_nice_chunk(), PL_nice_chunk and PL_nice_chunk_size were removed by
commit 9a87bd09eea1d037 in Nov 2010, without any ill effects, hence the
code used when STRANGE_MALLOC was *not* defined is essentially doing extra
work for no benefits.

From the lack of problems reported, one can assume that in the intervening
15 years malloc technology has got significantly improved, and it is probably
better to be honest with it, rather than trying to second guess it.

Hence remove all the non-STRANGE_MALLOC code, and leave everyone using the
much simpler code. See also
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00495.html
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-01/msg00126.html
remove unused define
remove toy code
Split out hash functions into new file and turn into inline static functions

This includes various tweaks related to building SipHash.
add xxhash
add a hardened one-at-a-time hash variant

Mix in additional randomness into the final value.
include missing headers so XS modules rebuild when they change
Attempt to eliminate a signed mistmatch in comparison warning

as far as I can tell 'i' can only be positive here.
add a "hash quality score" to Hash::Util::bucket_stats()
fixup wording
random tweaks
Remove XXHash (for now)

For some reason I could never get it working anyway, due to strange
segfaults that I did not have the time to track down.
default to PERL_FUNC_ONE_AT_A_TIME_HARD for all builds

For testing, but maybe for ever
Fix failing porting tests by bumping version number and tweaking pod
Fix tests that fail due to hash traversal randomization

One cannot assume two hashes with the same keys will have the
the same key order. And after hash traversal randomization one
can assume they WONT.
Fix test fails due to hash traversal randomization

One cannot assume two hashes with the same keys will have the
the same key order. And after hash traversal randomization one
can assume they WONT.
Enable hash traversal order randomization

This patch causes Perl to use a random order per hash when traversing hashes via keys(), values() and each().

The random order is determined by add a new property xhv_rand to struct xpvhv. This property
is calculated on per traverse of the hash by using a pointer/integer hash function on the
address of the bucket array, and then XORing it with the bucket index counter during traverse.
This causes each hash to have a different order for traversing the buckets.

The purpose of this change is to make hash seed discovery attacks harder. An attacker loses
a lot of information when the keys are "randomized".
turn the ptr_hash inline code into a true sub

Borrowed from autobox, which is released under the same terms as Perl.
randomize bucket split insertion in hsplit()
reset HvRAND() every hsplit, and properly rotate the bucket_rand. :-)