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.