fix generation of legacy type maps for message superclasses

My commit 4db4d043 changed the contents of the message_types dictionary to
include all message classes, including subclasses of stats and flow mods. The
old handcoded type maps did not include the subclasses. The change caused the
generated C of_message_type_to_id tables to be incorrect.

This change removes the subclasses from the generated message_types dictionary.
diff --git a/loxi_front_end/type_maps.py b/loxi_front_end/type_maps.py
index 1b30c1f..e2b3a83 100644
--- a/loxi_front_end/type_maps.py
+++ b/loxi_front_end/type_maps.py
@@ -162,10 +162,11 @@
 #
 ################################################################
 
-# The hardcoded message types are for objects without proper inheritance
+# The hardcoded message types are for inheritance parents
 message_types = {
     # version 1.0
     of_g.VERSION_1_0:dict(
+        experimenter            = 4,
         flow_mod                = 14,
         stats_request           = 16,
         stats_reply             = 17,
@@ -173,6 +174,7 @@
 
     # version 1.1
     of_g.VERSION_1_1:dict(
+        experimenter            = 4,
         flow_mod                = 14,
         stats_request           = 18,
         stats_reply             = 19,
@@ -180,6 +182,7 @@
 
     # version 1.2
     of_g.VERSION_1_2:dict(
+        experimenter            = 4,
         flow_mod                = 14,
         stats_request           = 18,
         stats_reply             = 19,
@@ -187,6 +190,7 @@
 
     # version 1.3
     of_g.VERSION_1_3:dict(
+        experimenter            = 4,
         flow_mod                = 14,
         stats_request           = 18,  # FIXME Multipart
         stats_reply             = 19,
diff --git a/loxigen.py b/loxigen.py
index bfa4909..3a22a12 100755
--- a/loxigen.py
+++ b/loxigen.py
@@ -519,7 +519,8 @@
                 continue
             subcls = cls[3:]
             val = find_type_value(ofclass, 'type')
-            type_maps.message_types[wire_version][subcls] = val
+            if not val in type_maps.message_types[wire_version].values():
+                type_maps.message_types[wire_version][subcls] = val
 
             # Extensions
             experimenter = find_experimenter('of', cls)