Openstack-clients: don't hard code venv

Updates install-openstack-clients so that it parses args rather than
using positional parameters.

Updates the various source install elements so that we use a
new {CLIENTNAME}_VENV_DIR variable (set via an environment.d hook)
to configure the virtualenv directory. The in element default is
the same as before (/opt/stack/venvs/python-clientname)

We also add support for controlling the virtualenv
--system-site-packages options by passing -s to the
install-openstack-client bin. This is externally
controllable by setting the {CLIENTNAME}_EXTRA_INSTALL_OPTS
variable. (defaults to "")

This is cleaner in that we aren't hard coding /opt/stack/venv
everywhere and also supports both isolated and shared
venvs (which some people would like to use).

Change-Id: Ieb90be14a5fb1a644d253777d6468870995372b0
Horizon: dynamically set config time env vars

Updates the Horizon element so that we inject the
HORIZON_VENV_DIR environment variable dynamically at build time
into the os-refresh-config/environment.d directory.
This ensures that the correct value from the build time gets
used during configuration and fixes an issue where the
wrong local_settings.py file is "templated" when using
alternate values for HORIZON_VENV_DIR.

Change-Id: I00c0cb0fa03d6cce5a4625f362cc246d1461c576
Add a new common-venv element

If used will set two environment variables to allow a common
virtual environment to be used with --system-site-packages
enabled so that Nova can pull in python-libvirt.

Change-Id: I8151e2fb9aff322dbe2ffc5982f341120dba6c6c
Merge "Openstack-clients: don't hard code venv"
Merge "Horizon: dynamically set config time env vars"
Merge "Add a new common-venv element"