code-coverage: modify intermediate layer algorithm to improve code coverage

- The intermediate layer uses traces from the plugin and DWARF data
from the binaries to match and create code coverage.
- The regulars expresions that group functions within the DWARF
data had been modified in order to capture more functions in the
binaries that correspond to source code.
- A refactoring including more classes were created to encapsulate
how the algorithm was implemented by the code.

Signed-off-by: Saul Romero <saul.romero@arm.com>
diff --git a/coverage-tool/coverage-reporting/cc_logger.py b/coverage-tool/coverage-reporting/cc_logger.py
new file mode 100644
index 0000000..67bf984
--- /dev/null
+++ b/coverage-tool/coverage-reporting/cc_logger.py
@@ -0,0 +1,28 @@
+import logging
+import time
+
+time_file = time.strftime("%Y%m%d-%H%M%S")
+# Create a global logger
+logger = logging.getLogger(__name__)
+logger.setLevel(logging.DEBUG)
+
+# Create handlers
+c_handler = logging.StreamHandler()
+f_handler = logging.FileHandler(f'cc_logger.log')
+c_handler.setLevel(logging.DEBUG)
+f_handler.setLevel(logging.DEBUG)
+
+# Create formatters and add it to handlers
+c_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %('
+                             'message)s')
+f_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %('
+                             'message)s')
+c_handler.setFormatter(c_format)
+f_handler.setFormatter(f_format)
+
+# Add handlers to the logger
+logger.addHandler(c_handler)
+logger.addHandler(f_handler)
+
+
+