Add functional tests for stack tags/hidden stacks

One test creates a stack with a tag, updates the 
tag and then deletes the tag. The second test, 
creates a stack with a tag named 'hidden'. In heat.conf, 
hidden_stack_tags is set to 'hidden' which means 
whichever stack has a tag named 'hidden', stack.list() 
should not pick it up.

blueprint stack-tags

Change-Id: Idf6669ccf5e210d4e6da3733a9ac190418306d98
diff --git a/common/test.py b/common/test.py
index 6c70d83..38748aa 100644
--- a/common/test.py
+++ b/common/test.py
@@ -321,7 +321,7 @@
             success_on_not_found=True)
 
     def update_stack(self, stack_identifier, template, environment=None,
-                     files=None, parameters=None,
+                     files=None, parameters=None, tags=None,
                      expected_status='UPDATE_COMPLETE',
                      disable_rollback=True):
         env = environment or {}
@@ -342,7 +342,8 @@
                     files=env_files,
                     disable_rollback=disable_rollback,
                     parameters=parameters,
-                    environment=env
+                    environment=env,
+                    tags=tags
                 )
             except heat_exceptions.HTTPConflict as ex:
                 # FIXME(sirushtim): Wait a little for the stack lock to be
@@ -405,9 +406,9 @@
         return dict((r.resource_name, r.resource_type) for r in resources)
 
     def stack_create(self, stack_name=None, template=None, files=None,
-                     parameters=None, environment=None,
-                     expected_status='CREATE_COMPLETE', disable_rollback=True,
-                     enable_cleanup=True):
+                     parameters=None, environment=None, tags=None,
+                     expected_status='CREATE_COMPLETE',
+                     disable_rollback=True, enable_cleanup=True):
         name = stack_name or self._stack_rand_name()
         templ = template or self.template
         templ_files = files or {}
@@ -419,7 +420,8 @@
             files=templ_files,
             disable_rollback=disable_rollback,
             parameters=params,
-            environment=env
+            environment=env,
+            tags=tags
         )
         if expected_status not in ['ROLLBACK_COMPLETE'] and enable_cleanup:
             self.addCleanup(self.client.stacks.delete, name)