First try with HTTP::Tiny, fallback on `wget`

This tries downloads first with the built-in HTTP::Tiny
before it falls back to the external `wget` tool. Arguably,
the reliance on `wget` could be eliminated to reduce the
amount of code clutter.
Elide use of `rm`

We remove the reliance on an external 'rm' tool in
favour of using File::Path::remove_tree.

We also eliminate some dir-changing by using
more absolute directory names.
Elide use of `ls`, `find` and `touch`

File::Find and code copied from ExtUtils::Command do the same.

This patch makes the code to remove the exec bit a little less
efficient by not restricting itself to files that now have
the exec bit set, but instead looking at all files.

This change also uses $ENV{TEMP} in preference to
/tmp as a temp directory for caching the CPAN index.
Elide use of `chmod`

We simplify life here and try to set Porting/Makefile.PL
always to mode 755 (u=rwx , ao=rx) instead of being
more precise.
Run correct make

Use Config.pm to determine correct kind of `make` tool

For Windows, the make process is supposed to get kicked off
in ./Win32.

We now run `make test-prep` before trying the module self-tests
Elide use of `grep`

The new approach uses more memory as it reads the whole
11 MB CPAN packages file into memory. Also, it makes
less use of parallel multiprocessing now available on
many machines.
Eliminate reliance on some external tools for 'Porting/sync-with-cpan'

This series of patches eliminates the reliance on external
tools for Porting/sync-with-cpan .

If these changes stand the test of time, similar changes
can be applied to other Porting/ tools to reduce the
need for external tools.