Couple of fixes to tempest/auth

Basically if you don't pass a header, the method header was None and later
when you try to assign a value to it's copy in _decorate_request method you
try to assign a value to a NoneType. Fixed the issue changing the copy to
fallback and provide an empty dict in case headers are None (The assign occours
in line 181).

The second fix is related to the base_url method in Keystone v3 provider. We
test the size of the filtered catalog matches and if equals to zero we need to
assign it to the first endpoint in the service catalog instead of the filtered
catalog itself (which has length zero, so impossible).

Related to bp unit-tests

Change-Id: I9f11ddcb6f34c0161cb338a1956cefc52e990af2
diff --git a/tempest/auth.py b/tempest/auth.py
index 582cfdd..e1ba13b 100644
--- a/tempest/auth.py
+++ b/tempest/auth.py
@@ -177,7 +177,7 @@
         base_url = self.base_url(filters=filters, auth_data=auth_data)
         # build authenticated request
         # returns new request, it does not touch the original values
-        _headers = copy.deepcopy(headers)
+        _headers = copy.deepcopy(headers) if headers is not None else {}
         _headers['X-Auth-Token'] = token
         if url is None or url == "":
             _url = base_url
@@ -371,7 +371,7 @@
                             ep['region'] == region]
         if len(filtered_catalog) == 0:
             # No matching region, take the first endpoint
-            filtered_catalog = [filtered_catalog[0]]
+            filtered_catalog = [service_catalog[0]]
         # There should be only one match. If not take the first.
         _base_url = filtered_catalog[0].get('url', None)
         if _base_url is None: