make_ext.pl should validate exactly which clean targets it can be used for.

Previously it would accept anything matching /clean$/. Now we check for the 4
names that we know the top level Makefile defines.
Extract fallback_cleanup() to hold the code that writes cleanup shell scripts.
Change the test to use itself as test file, instead of the generated Makefile.

The generated Makefile is about to go away :-)
For simple extensions make_ext.pl can emulate the entire MakeMaker/make dance.

For simple extensions consisting only of Perl modules and Pod, EU::MM
generates a Makefile where the only target that does any work as part of
'all' is 'pm_to_blib', and *that* is just running perl to call
ExtUtils::Installed::pm_to_blib() with those files as arguments, and then
touching pm_to_blib.

Because the top level Makefile's dependency rule for "is an extension built"
is looking for that file pm_to_blib, and all builds (and cleans) of
extension directories are performed by running make_ext.pl, not a direct
recursive make, it means that make_ext.pl can actually directly emulate the
entire work done by EU::MM and make in this particular case. This means that
we save (at least) three subprocesses:

* miniperl to run Makefile.PL
* make
* miniperl to run ExtUtils::Installed::pm_to_blib()

This change obviously adds some logic duplication, but it roughly halves the
time taken for `make test_prep` to figure out that nothing needs doing.
And obviously also saves at least that much time on the actual build, which
may well be 60 seconds / number of cores.
make_ext.pl can also handle extensions with a module file at the top level.

Processing this old-style layout gains us another 6 extensions.
make_ext.pl can also handle extensions with a module tree at the top level.

This gets us Digest and Memoize.
make_ext.pl can handle 4 extensions in dist/ which need a Makefile.PL for CPAN.