First (rough) implementation of a cloud3->cloud4 upgrade

This introduces five new mkcloud commands for testing the different steps of
the cloud3 to cloud4 upgrade as outlined in the manual:

"prepare_cloud4upgrade":
    Sets up the Cloud 4 repos on the admin server and
    installs the latest suse-cloud-upgrade code from a git checkout.

"cloud4upgrade_1st":
    Runs suse_cloud_upgrade upgrade for the first time (the pre step)

"cloud4upgrade_2nd":
    Updates packages on the admin node and runs suse_cloud_upgrade upgrade for
    the second time (post step)

"cloud4upgrade_clients":
    Deploys the updater barclamp on all client nodes to install the cloud 4
    packages

"cloud4upgrade_reboot_and_redeploy_clients":
    Final step. Calls suse_cloud_upgrade reboot-nodes and redeploys all
    barclamps with exisiting proposals on the clients

This currently needs a mkcloud deployed Cloud3 with "cloudsource=GM3" and
"TESTHEAD=1" to have all maintenance updates installed.
Less version-dependent upgrade process
Stopping chef-client on admin node to prevent zypper locks

updates

chef-client

checks for crowbar

test

Improving upgrade process
Install barclamps not present on older Cloud

qa_crowbarsetup: chef exit codes and check if zypper is running

This patch adds the following helper functions:

* `wait_if_running` checks if there is a process running and waits until the
process exits, this is useful if you want to use zypper and want to check
that there is no other zypper process running in the server.
* `die` prints a message to stderr and exit with the error code passed as argument.
qa_tripleo.sh: Fix testenv jsonfile creation

Nodes are automatically added by create-nodes script. No need to do it
manually.
Save log from tempest as separate artifact
qa_tripleo.sh: Move tripleo-ci git clone

Use /opt/stack/new as tripleo-ci git clone destination. That's what
other git clones use as well.
Workarounds for the bugs of the day
bash8 fixes
make sure sudo is installed

Some minimal installations (like the one I built in susestudio) may
not have sudo.
fix typo
Merge pull request #109 from dirkmueller/master

Workarounds for the bugs of the day
Merge pull request #110 from toabctl/fix-testenv-datafile

qa_tripleo.sh: Fix testenv jsonfile creation
Merge pull request #111 from aspiers/tripleo-install-sudo

Tripleo install sudo
Update subcommand description
Install barclamps that become available after the upgrade
Improve upgrade target detection
Move setting of source variables to a separate function
Merge branch 'cloud4upgrade' of github.com:nkrinner/automation into nkrinner-cloud4upgrade

Conflicts:
	scripts/mkcloud
mkcloud: dedup error reporting with a function

error messages go to stderr as dog intended.

Conflicts:
	scripts/mkcloud
mkcloud: make sure all errors go to stderr
qa_crowbarsetup: bash8 fixes
Setup workspace