twister: handle quotes for configuration options

Add support handling quotes for configuration options in extra args by
escaping them properly instead of removing the quotes altogether. For
other options in extra_args quotes are removes as usual.

Add similar support in west build command also.

Add a unit test to check this functionality.

Signed-off-by: Chaitanya Tata <Chaitanya.Tata@nordicsemi.no>
diff --git a/scripts/west_commands/build.py b/scripts/west_commands/build.py
index bcc5106..f7a605f 100644
--- a/scripts/west_commands/build.py
+++ b/scripts/west_commands/build.py
@@ -317,7 +317,11 @@
                     if data == 'extra_configs':
                         args = ["-D{}".format(arg.replace('"', '\"')) for arg in arg_list]
                     elif data == 'extra_args':
-                        args = ["-D{}".format(arg.replace('"', '')) for arg in arg_list]
+                        # Retain quotes around config options
+                        config_options = [arg for arg in arg_list if arg.startswith("CONFIG_")]
+                        non_config_options = [arg for arg in arg_list if not arg.startswith("CONFIG_")]
+                        args = ["-D{}".format(a.replace('"', '\"')) for a in config_options]
+                        args.extend(["-D{}".format(arg.replace('"', '')) for arg in non_config_options])
                     elif data == 'extra_conf_files':
                         extra_conf_files.extend(arg_list)
                         continue