Remove the Icwd Makefile macros as lib/buildcustomize.pl now sets this up.

Now that lib/buildcustomize.pl is built at the same time as building
miniperl, it will always have added paths to Cwd into @INC. Hence there's no
longer a need for Makefile macros to do this.

On Win32 we can't eliminate $(ICWD) completely as it's also being used for some
invocations of the (real) perl binary. Only miniperl loads buildcustomize.pl
to set up @INC to include paths for the initial locations of modules such
as Cwd.
write_buildcustomize.pl no longer writes to STDOUT

write_buildcustomize.pl now opens lib/buildcustomize.pl itself, instead of
writing to STDOUT and relying on the Makefile to set up redirection. This
means that an empty lib/buildcustomize.pl is not created if
write_buildcustomize.pl fails to compile (for whatever reason), and permits
write_buildcustomize.pl to delete (or attempt to delete) the output file if
it detects an error.

Hard code the output file name (lib/buildcustomize.pl), as it's the same on
all platforms, and @ARGV is already used to optionally pass a directory for
write_buildcustomize.pl to change to before running.

Experimentation suggests that various make utilities don't delete a file
created by redirection even if an error occurs. Hence this should be more
robust.

Add -f to the miniperl commandline when running write_buildcustomize.pl to
avoid reading in any existing lib/buildcustomize.pl. write_buildcustomize.pl
doesn't need the setup provided by lib/buildcustomize.pl, and running it
might cause errors which prevents writing out a correct version, making an
incomplete build harder to recover from.
write_buildcustomize.pl now test loads the generated lib/buildcustomize.pl

And deletes it if it encounters an error whilst loading it. A non-functional
lib/buildcustomize.pl will cause the build to fail with seemingly unrelated
errors. Deleting it and exiting with an error should make the cause of build
failures obvious.
In miniperl, if lib/buildcustomize.pl fails to load, exit with an error.

Unlike sitecustomize.pl, if lib/buildcustomize.pl exists, it should not fail.
If it does, it should be reported immediately as a build failure.

This makes the build process more robust.
Add dist/constant/lib to the paths in the generated lib/buildcustomize.pl

Strictly, add it to write_buildcustomize.pl, and so that the absolute path
is added to the generated file. Also add both dist/constant/lib and ext/re
to the @INC write_buildcustomize.pl to accommodate the upcoming change to
Cwd.
Add the upstream Makefile.PL for Cwd

This needs to return to the perl repository because the upcoming change to Cwd
needs to patch to include extra logic not in the auto-generated Makefile.PL
File::Spec in XS

For work purposes, last year I reimplemented parts of File::Spec in XS.
It wasn't in a CPANable form initially, and File::Spec had core/CPAN
version skew issues, so I didn't initially publish my work.  I've now
cleaned it up and rebased it on PathTools-3.40, and the patch is attached.
This is for review, and for whoever is currently maintaining File::Spec
to merge it into blead at an appropriate juncture.  (I fear it's a bit
too late to get into 5.18.)

[With a bump to a dev version on the changed .pm files to keep
t/porting/cmp_version.t sweet]