Backup data dirs on restore, set correct permissions

Backup of data dirs:

When restoring a backup, we need to remove the currently active data
directories in order to restore the ones from the backup archive.
This is done by moving them to a temp directory, then extracting the
archive and deleting the temp directory.

This way, if something goes wrong during extraction, one can still
recover the pre-restore repositories. Since they are git repositories
and we don't allow force-pushes, they may still be of use.

Permissions:

To reset the permissions on the extracted repositories, super user
privileges are needed. This is accomplished by first trying to
get those privileges for the extraction. If the user refuses to
enter the password (wrong one three times or Ctrl-C), the extraction
will be done as the normal user. This way, the repository archive
is still extracted, but all the files belong to the restorign user.
Use open3 to send system calls.
print errors on stderr
Use verbose flag for tar command as well.
Don't rescue from error when moving data dirs.
Print more information on the whole process.