Refactor such that Tool.activated_config returns a map. NFC (#502)

Split out from #501
diff --git a/emsdk.py b/emsdk.py
index d90289b..4c72864 100755
--- a/emsdk.py
+++ b/emsdk.py
@@ -1461,11 +1461,8 @@
   # activated is the relevant one.
   activated_config = OrderedDict()
   for tool in active_tools:
-    tool_cfg = tool.activated_config()
-    if tool_cfg:
-      for specific_cfg in tool_cfg.split(';'):
-        name, value = specific_cfg.split('=')
-        activated_config[name] = value
+    for name, value in tool.activated_config().items():
+      activated_config[name] = value
 
   if 'NODE_JS' not in activated_config:
     node_fallback = which('nodejs')
@@ -1474,7 +1471,7 @@
     activated_config['NODE_JS'] = "'%s'" % node_fallback
 
   for name, value in activated_config.items():
-    cfg += name + ' = ' + value + '\n'
+    cfg += name + " = '" + value + "'\n"
 
   cfg += '''\
 TEMP_DIR = '%s'
@@ -1620,10 +1617,14 @@
   # Returns the configuration item that needs to be added to .emscripten to make
   # this Tool active for the current user.
   def activated_config(self):
-    if hasattr(self, 'activated_cfg'):
-      return to_unix_path(self.expand_vars(self.activated_cfg))
-    else:
-      return ''
+    if not hasattr(self, 'activated_cfg'):
+      return {}
+    config = OrderedDict()
+    expanded = to_unix_path(self.expand_vars(self.activated_cfg))
+    for specific_cfg in expanded.split(';'):
+      name, value = specific_cfg.split('=')
+      config[name] = value.strip("'")
+    return config
 
   def activated_environment(self):
     if hasattr(self, 'activated_env'):
@@ -1727,13 +1728,10 @@
         return False
 
     activated_cfg = self.activated_config()
-    if activated_cfg == '':
+    if not activated_cfg:
       return len(deps) > 0
 
-    activated_cfg = activated_cfg.split(';')
-    for cfg in activated_cfg:
-      cfg = cfg.strip()
-      key, value = parse_key_value(cfg)
+    for key, value in activated_cfg.items():
       if key not in dot_emscripten:
         debug_print(str(self) + ' is not active, because key="' + key + '" does not exist in .emscripten')
         return False
@@ -1741,6 +1739,7 @@
       # If running in embedded mode, all paths are stored dynamically relative
       # to the emsdk root, so normalize those first.
       dot_emscripten_key = dot_emscripten[key].replace("emsdk_path + '", "'" + emsdk_path())
+      dot_emscripten_key = dot_emscripten_key.strip("'")
       if dot_emscripten_key != value:
         debug_print(str(self) + ' is not active, because key="' + key + '" has value "' + dot_emscripten_key + '" but should have value "' + value + '"')
         return False