manifest: refactor python scripts for modularity

keyword_substitution.py for single line processing script
generate_from_template.py for template file to output
  file generation for a list of files
tfm_parse_manifest_list.py for building TFM-specific
  database and generated file list and tool invocation
YAML files for test vectors, generated file list

Change-Id: I514b5abff0df5a9c48357a6b52e80fc77595109d
Signed-off-by: Miklos Balint <miklos.balint@arm.com>
diff --git a/tools/keyword_substitution.py b/tools/keyword_substitution.py
index 57d4a31..9a98aae 100644
--- a/tools/keyword_substitution.py
+++ b/tools/keyword_substitution.py
@@ -32,9 +32,7 @@
     if kwargs.get("verbosity"):
         VERBOSITY = kwargs["verbosity"]
     if level.value <= VERBOSITY.value:
-        string = ''
-        for arg in args:
-            string += str(arg) + ' '
+        string = ' '.join(map(str, args))
         print string
 
 def leaftype(x):
@@ -138,5 +136,5 @@
     for outline in outlist:
         outstring += ''.join(outline) + "\n"
     log_print(Verbosity.info, "generator returns with:")
-    log_print(Verbosity.info, outstring, "<<")
+    log_print(Verbosity.info, outstring + "<<")
     return outlist