Support IPv4 multicast in P4 fabric pipeline

- Multicast can use the same table as unicast. Merge into one.
- Allow masked destination MAC in classifier table

Note:
- Pipeliner now translates all exact MAC match to masked match with FF:FF:FF:FF:FF:FF mask.
- Interpreter now only uses masked src/dst MAC

Change-Id: Ibd27ebfb2d72ba929031f07a29927eb6f1844f11
(cherry picked from commit 0865779b66a59a623856b1353615e462af5575c5)
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
index cd54f59..e8ad083 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
@@ -703,10 +703,10 @@
       "binding" : "FabricIngress.forwarding.mpls"
     },
     {
-      "name" : "FabricIngress.forwarding.unicast_v4_counter",
+      "name" : "FabricIngress.forwarding.routing_v4_counter",
       "id" : 4,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.unicast_v4"
+      "binding" : "FabricIngress.forwarding.routing_v4"
     },
     {
       "name" : "FabricIngress.forwarding.acl_counter",
@@ -1252,7 +1252,7 @@
       ]
     },
     {
-      "name" : "FabricIngress.forwarding.set_next_id_unicast_v4",
+      "name" : "FabricIngress.forwarding.set_next_id_routing_v4",
       "id" : 14,
       "runtime_data" : [
         {
@@ -3497,7 +3497,7 @@
               "mask" : null
             },
             {
-              "match_type" : "exact",
+              "match_type" : "ternary",
               "name" : "hdr.ethernet.dst_addr",
               "target" : ["ethernet", "dst_addr"],
               "mask" : null
@@ -3509,7 +3509,7 @@
               "mask" : null
             }
           ],
-          "match_type" : "exact",
+          "match_type" : "ternary",
           "type" : "simple",
           "max_size" : 1024,
           "with_counters" : true,
@@ -3655,13 +3655,13 @@
           }
         },
         {
-          "name" : "FabricIngress.forwarding.unicast_v4",
+          "name" : "FabricIngress.forwarding.routing_v4",
           "id" : 9,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 87,
             "column" : 10,
-            "source_fragment" : "unicast_v4"
+            "source_fragment" : "routing_v4"
           },
           "key" : [
             {
@@ -3678,10 +3678,10 @@
           "support_timeout" : false,
           "direct_meters" : null,
           "action_ids" : [14, 2],
-          "actions" : ["FabricIngress.forwarding.set_next_id_unicast_v4", "NoAction"],
+          "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "NoAction"],
           "base_default_next" : "FabricIngress.forwarding.acl",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_unicast_v4" : "FabricIngress.forwarding.acl",
+            "FabricIngress.forwarding.set_next_id_routing_v4" : "FabricIngress.forwarding.acl",
             "NoAction" : "FabricIngress.forwarding.acl"
           },
           "default_entry" : {
@@ -4272,7 +4272,7 @@
           "id" : 2,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
-            "line" : 235,
+            "line" : 186,
             "column" : 11,
             "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
           },
@@ -4298,7 +4298,7 @@
           "id" : 3,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
-            "line" : 236,
+            "line" : 187,
             "column" : 17,
             "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
           },
@@ -4324,7 +4324,7 @@
           "id" : 4,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
-            "line" : 250,
+            "line" : 193,
             "column" : 17,
             "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
           },
@@ -4342,7 +4342,7 @@
               }
             }
           },
-          "true_next" : "FabricIngress.forwarding.unicast_v4",
+          "true_next" : "FabricIngress.forwarding.routing_v4",
           "false_next" : "FabricIngress.forwarding.acl"
         },
         {