Don't ignore failure to replay merge silently

Early on, the replay mechanism wasn't stable, and failures were
silently ignored to prevent it from blocking usage (since it's
strictly speaking entirely possible to review a rebase without it.)

It should be stable now, however, so ignoring errors now only
serves to hide regressions from view.
Make internal cloning more robust

Some git operations create pack-*.keep files to keep certain pack
files alive.  They are created with the access bits 0600, which
means they are only accessible to the user performing the operation.
While such inaccessible pack-*.keep files exist, it may (depending
on the file system, kernel, and possible Git version) be impossible
to perform a "--local" clone of the repository.

Deal with this issue by silently falling back to cloning using the
safer but slower "Git aware" transport mechanism by using a file://
repository URL.  This will copy all files, so uses more disk space
and takes longer, but should at least not fail.

Also drive-by fix an clean-up bug in the relaycopy() and workcopy()
functions: they removed the repository clone, but not the temporary
directory into which the repository was cloned, leaving lots of
empty directories under /var/lib/critic/{temporary,relay}/.
Extend 012-replayrebase.py to test a bit more

Make it add some (quite a lot of, actually) files as part of the
rebase, to trigger a non-empty "rebase diff" and to create a new
pack file in the repository when pushing (which in turn causes the
existence of an inaccessible pack-*.keep file when the rebase
replay mechanism clones the repository, and thus tests our handling
of that.)