Use immutable arg rather mutable arg

Passing mutable objects as default args is a known Python pitfall.
We'd better avoid this. This commit changes mutable default args with
None, then use 'arg = arg or []'.

Change-Id: I52a37bbc129fab40a99c919a837147d663941dce
Only conditionally import working keyring

keyring is conditionally imported if available on your platform,
however not all versions of keyring actually work. Specifically
we have global-requirements of >=2.1,!=3.3, so we know those are
the only versions we believe work.

If you are on an older platform, using system installed
python-keyring, python-keystoneclient won't install a new version,
because it's optional, but then will use a terriblely old verison,
which explodes with dbus errors.

The fix is to be more explicit on import.

Change-Id: I040f7b2311d7d5a450b8b12642752ac519b206fa
Closes-Bug: #1242992
Merge "Only conditionally import working keyring"
Merge "Use immutable arg rather mutable arg"