Extract version routines into two new files

This is to make synchronisation between the CPAN distribution and the
perl core easier.

The files have different extensions to match what the CPAN distribu-
tion will have.  vutil.c is a separate compilation unit that the CPAN
dist already has.  vxs.inc will be included by vxs.xs (vxs.c is obvi-
ously alreday taken, being generated from vxs.xs).

In the perl core util.c includes vutil.c and universal.c
includes vxs.inc.
Import vutil.h from the CPAN version dist

This will be needed when we switch vutil.c over to using macros for
version functions, the way the CPAN dist does it.
vutil.c: Add preproc code specific to CPAN

The purpose is to bring the files into synch so that later version.pm
upgrades involve dropping files into place.

This requires changing vutil.h a bit to work in the core.
vxs.inc: Don’t hard-code class name

This is part of bringing perl and CPAN into synch.
vxs.inc: Add dVAR define for CPAN use

This is part of bringing perl and CPAN into synch.
vxs.inc: arg list checking for UNIVERSAL::VERSION

This brings it in line with the CPAN implementation.  It’s hard to
test this, as the tests should go in cpan/version, but the pure-Perl
implementation doesn’t check the number of arguments.
universal.c: include vutil.h

Subsequent changes to vxs.inc will require it.
vxs.inc: Import UNIVERSAL::VERSION from CPAN

No functional changes, just cosmetic (and it works with older
perls, too).

This is part of bringing perl and CPAN into synch.
[rt.cpan.org #88495] version->new str cmp bug

We shouldn’t consider ver and version to be the same class.

If ver inherits from version, ver->new should give a ver object.

This string comparison bug has only ever existed in the perl core
version of the version routines.  It was ed1db70e1224 in 5.16 that
introduced it.
vxs.inc: Integrate the CPAN version of version_new

No behaviour changes; just rearranged, and with a few extra #ifdefs.
[rt.cpan.org #88495] bad string comparison in version->qv

qv is affected, too.  A package called "ver" inheriting from version
should be able to create "ver" objects via ->qv.
vxs.inc: Disallow multiple args to XS_version_normal

Also rename the argument.

This is part of bringing perl and CPAN into synch.
Integrate the rest of CPAN’s vxs.inc

Uppercase macros instead of functions (so the CPAN version can call
its own non-core functions if need be), plus a poor man’s typemap
(VTYPECHECK).
Use VXS_ prefix for XSUB bodies in CPAN version

The names of the functions in core and in the CPAN version will con-
flict otherwise.

Since perl versions before 5.16.0 did not have XS_INTERNAL (which
could solve this problem another way, making the functions static),
it’s easier just to use different names.
Update Maintainers.pl for version.pm changes

I *hope* I got it all correct.  At least cmp_version.t now passes.
vxs.inc: Fix thinko

This was causing test failures after rebasing against blead.
Integrate CPAN version.pm release into core
Grab latest changes from CPAN 0.9905
Integrate CPAN release of version.pm 0.9905

When adding the CPAN-distributed files for version.pm, it is necessary
to delete an entire block out of lib/version.pm, since that code is
only necessary with the CPAN release.  Within core Perl, there is no
version::vxs implementation class any more.
Apply patch from Sprout to make vxs.inc better

[Committer’s note: I already had the vxs.inc changes in my branch,
 so this patch only includes the version.pm changes.]