Prune some .gitignore files.

Class::ISA was removed by 3df51b85ce4a5664 in April 2010.
Module::Pluggable was removed by commit 482cac4d574f8c6c in May 2013.
Module/Build/ConfigData.pm was moved from lib/ to cpan/ by commit
0b93a7997e668a67 in Nov 2009.
Pod::Plainer was removed by commit afbe215fcafe7a92 in April 2010.
Shell was removed by commit a1e75797c204ade8 in June 2011.
Switch was removed by commit 75108aefc8b50fcf in April 2010.
Make .gitignore and lib/.gitignore more consistent.

Move the ignore of lib/App/, lib/mro.pm, lib/TAP/, lib/Test/Harness.pm,
lib/File/DosGlob.pm, lib/inc/, Win32.pm, Win32API/ and Win32Core.pm from
.gitignore to lib/.gitignore, where they more logically belong.
Consistently use trailing / for ignored directories.
Add a leading / to the ignore of unicore/TestProp.pl
(The line was added by commit 3df51b85ce4a5664 in Nov 2009, and it's not
clear why it did not have a leading / from the start.)

Re-sort lib/.gitignore lexically.
Move all the "special case" build products from lib/.gitignore to .gitignore

These are all the build products that we can't programmatically infer will be
generated from extensions in ext, dist and cpan.
On failure, regen_lib.pl now generates diagnostics, not just "not ok".

We have to stop using File::Compare's compare(), as it doesn't return
diagnostics about what went wrong.
Generate lib/.gitignore from MANIFEST.

It's possible to programmatically determine almost all the files and
directories which will be created in lib/ by building the extensions.
Hence add a new script regen/lib_cleanup.pl to do this.

This saves having to manually update lib/.gitignore to reflect changes in
the build products of extensions, which has become a small but reoccurring
instance of scut-work.
Remove 3 redundant lines from .gitignore

These test files are no longer generated in directories beneath lib/
Refactor the use of verify_contiguous() in pod_rules.pl

Move the substitution from the callers in into verify_contiguous().
Pass in a regex object for the substitution.
Return the modified file contents from verify_contiguous().
Load Carp when verify_contiguous() is called, instead of at compile time.
Move verify_contiguous() from Porting/pod_rules.pl to Porting/pod_lib.pl

And document it.
Extract the main processing loop of Porting/pod_rules/pl into process().
Some tidying of Porting/pod_rules.pl

Iterate over the files in sorted order, instead of hash iteration order.
This means that in TAP mode test failures will have consistent numbers.
Provide a description for the first test when outputting TAP.
Use clearer variable names in process(), and avoid using // as this code will
soon be exposed to pre-5.10
Move process() from Porting/pod_rules.pl to Porting/pod_lib.pl

And document it.
Delete obsolete clean rules from Makefile.SH

Rules to clean lib/ExtUtils/CBuilder/t and lib/ExtUtils/ParseXS/t haven't
been needed since the modules were moved to cpan/ and dist/
Remove the EXTUTILSDIR macro from the Win32 makefiles.

It hasn't been used since commit e3160748789c8366 in Sept 2009 eliminated
the XSUBPP macro.
Re-order clean-up rules to give a line for regen/lib_cleanup.pl to key off.

The Win32 line C<-del /f *.def *.map> and the start of the Unix line
C<rm -f so_locations> are unlikely to change.
Generate the lib/ cleanup rules in Makefile.SH automatically from MANIFEST.
Generate the lib/ cleanup rules in the Win32 Makefiles from MANIFEST.
Merge work automating generation of lib/.gitignore and lib/ subdir cleanup.

This makes no changes to any installed code.