First stab at BNG support in fabric.p4

This implementation is derived from Deutsche Telekom contribution:
https://github.com/opencord/p4se

It supports basic upstream and downstream termination based on double
VLAN tags and PPPoE, including counters and downstream metering.

Change-Id: I940959f2338d7319654cf665f6cfe2de7200616b
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
index 860a5a3..ca5fc41 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
@@ -313,13 +313,13 @@
   "header_union_stacks" : [],
   "field_lists" : [],
   "errors" : [
-    ["NoError", 0],
-    ["PacketTooShort", 1],
-    ["NoMatch", 2],
-    ["StackOutOfBounds", 3],
-    ["HeaderTooShort", 4],
-    ["ParserTimeout", 5],
-    ["ParserInvalidArgument", 6]
+    ["NoError", 1],
+    ["PacketTooShort", 2],
+    ["NoMatch", 3],
+    ["StackOutOfBounds", 4],
+    ["HeaderTooShort", 5],
+    ["ParserTimeout", 6],
+    ["ParserInvalidArgument", 7]
   ],
   "enums" : [],
   "parsers" : [
@@ -995,7 +995,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "include/parser.p4",
-        "line" : 243,
+        "line" : 260,
         "column" : 8,
         "source_fragment" : "FabricDeparser"
       },
@@ -2386,7 +2386,7 @@
           ],
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 58,
+            "line" : 62,
             "column" : 50,
             "source_fragment" : "hdr.gtpu_ipv4"
           }
@@ -2401,7 +2401,7 @@
           ],
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 58,
+            "line" : 62,
             "column" : 65,
             "source_fragment" : "hdr.gtpu_udp"
           }
@@ -2833,7 +2833,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 137,
+            "line" : 142,
             "column" : 36,
             "source_fragment" : "2w1; ..."
           }
@@ -2919,7 +2919,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 138,
+            "line" : 143,
             "column" : 38,
             "source_fragment" : "2w2; ..."
           }
@@ -2945,7 +2945,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 136,
+            "line" : 141,
             "column" : 37,
             "source_fragment" : "2w0; ..."
           }
@@ -3212,7 +3212,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 119,
+            "line" : 124,
             "column" : 28,
             "source_fragment" : "5; ..."
           }
@@ -3368,7 +3368,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 132,
+            "line" : 137,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -3387,7 +3387,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 116,
+            "line" : 121,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -4388,7 +4388,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "fabric.p4",
-        "line" : 42,
+        "line" : 46,
         "column" : 8,
         "source_fragment" : "FabricIngress"
       },
@@ -4399,7 +4399,7 @@
           "id" : 0,
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 58,
+            "line" : 62,
             "column" : 50,
             "source_fragment" : "hdr.gtpu_ipv4, hdr.gtpu_udp"
           },
@@ -5813,7 +5813,7 @@
           "id" : 10,
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 67,
+            "line" : 74,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_forwarding == false"
           },
@@ -5924,7 +5924,7 @@
           "id" : 14,
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 71,
+            "line" : 78,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_next == false"
           },
@@ -6011,7 +6011,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "fabric.p4",
-        "line" : 85,
+        "line" : 92,
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },