Remove buggy loop-based byte swapping code.

The irony is that the union-based code special-cased for little endian
systems actually works everywhere, even on mixed-endian systems.
Eliminate the conditionally-compiled fallback functions for htonl etc.

These are now only being used for mixed-endian platforms which do not
provide their own htnol (etc) functions. Given that the fallbacks have been
buggy since they were added in Perl 3.0, it's safe to conclude that no
mixed-endian platforms were ever using these functions.

It's also unclear why these functions were ever marked as 'A', part of the
API. XS code can't call them directly, as it can't rely on them being
compiled. Unsurprisingly, no code on CPAN references them.
Refactor macros in pp_pack.c, removing support for mixed-endian byte orders.

The byte-order handling can be simplified considerably if we don't have to
support mixed-endian systems. It's not clear whether Perl 5.000 even
compiled on PDP-11s, let alone more recent versions.

Support probably can be added back at the end of the refactoring, if someone
has time and a PDP-11 to test on, but for the intermediate stages it is a
lot easier not to need to think about such platforms.
In pp_pack.c, refactor DO_BO_(UN)?PACK_N to use sizeof() on the variable.

Previously they were using sizeof() on the type argument passed to the
macro. This change makes their implementation more like DO_BO_(UN)?PACK
and DO_BO_(UN)?PACK_PTR.
In pp_pack.c, refactor DO_BO_(UN)?PACK_PTR to use my_letohn etc

Previously they were casting the pointer to an integer value, calling
a my_letoh* function for the appropriate size, and casting the return value
back to a pointer.
In pp_pack.c, refactor DO_BO_(UN)?PACK to use my_letohn etc

Previously they were using a my_letoh* function for the appropriate size.
Eliminate my_{hto[bl]e,[bl]etoh}{16,32,64,s,i,l} as nothing now uses them.
Use DO_BO_{UN,}PACK in place of DO_BO_UNPACK_{N,PC}

Also, eliminate the intermediate macros DO_BO_PACK_PTR and DO_BO_UNPACK_PTR.
DO_BO_{UN,}PACK can use my_swabn() directly.

This removes the only users of my_{be,le,h}to{be,le,h}n, so remove the
definitions for those macros.
Swap byte order in DO_BO_(UN)?PACK based on a variable needs_swap.

Initialise needs_swap based on TYPE_ENDIANNESS(datumtype).
This makes the two definitions of DO_BO_UNPACK identical, and the two
definitions of DO_BO_PACK identical.

This also makes building pp_pack.c on a mixed endian byteorder architecture
a compile time error. The commit adds pointers on where to add code to
re-instate support for such architectures.
Merge the identical definitions of DO_BO_UNPACK and DO_BO_PACK.

Delete the now-unused mixed-endian definitions of DO_BO_UNPACK and
DO_BO_PACK, and the macro BO_CANT_DOIT, as they were the last two things
using it.
Refactor the two uses of SHIFT{16,32} not followed by DO_BO_UNPACK().

There is one place where SHIFT16() is not immediately followed by
DO_BO_UNPACK(), and one place where SHIFT32() is not immediately followed by
DO_BO_UNPACK(). Every other use of either macro is followed by
DO_BO_UNPACK(). For the two locations that are not followed, mask the
last parameter to SHIFT32() to remove the endianness flags. The endianness
flags are not (yet) used by SHIFT16() or SHIFT32(), but will be soon.
As DO_BO_UNPACK() is now implemented as my_swabn(), simplify 'J' and 'j'.

The conditionally compiled code to figure out the correct named integer
size for UVs and IVs is no longer needed, as my_swabn() will swap UVs and
IVs, whatever their length.