SDFAB-193 Add packet-out routing feature to fabric-v1model

This is a port from fabric-tna:
https://github.com/stratum/fabric-tna/pull/262

By default, all packet-outs are sent straight to the egress port passed
as a controller packet-out metadata, bypassing the forwarding tables in
the ingress pipe. With this change, the control plane can set a new
packet-out metadata named `do_forwarding` to instruct the parser to
forward packet-outs as regular packets.

When handling `OutboundPacket` in ONOS, the pipeconf (interpreter) uses
the `OUTPUT` instruction with logical port `TABLE` to enable forwarding.
This is consistent with the OpenFlow behavior, from the spec:

    Required: TABLE: Represents the start of the OpenFlow pipeline (see
    5.1). This port is only valid in an output action in the action list
    of a packet-out message (see 7.3.7), and submits the packet to the
    first flow table so that the packet can be processed through the
    regular OpenFlow pipeline.

We also rename some test classes for consistency with main classes.
Before we had a FabricPipelinerTest class that was used for a different
purpose than testing FabricPipeliner.

Change-Id: I1b47c4b4f233df5b67d1a6dc743dea27c54772b2
(cherry picked from commit db347377bec8bf6f71fb9828f4dc552731e562f7)
diff --git a/pipelines/fabric/impl/src/main/resources/include/control/spgw.p4 b/pipelines/fabric/impl/src/main/resources/include/control/spgw.p4
index a27f9a0..2ec4776 100644
--- a/pipelines/fabric/impl/src/main/resources/include/control/spgw.p4
+++ b/pipelines/fabric/impl/src/main/resources/include/control/spgw.p4
@@ -90,7 +90,6 @@
             (false, true,  false) : decap_inner_udp();
             (false, false, true)  : decap_inner_icmp();
         }
-        size = 4;
     }
     apply {
         decap_gtpu.apply();
@@ -105,7 +104,7 @@
     //=============================//
     //===== Misc Things ======//
     //=============================//
-    
+
     counter(MAX_PDR_COUNTERS, CounterType.packets_and_bytes) pdr_counter;
 
     DecapGtpu() decap_gtpu_from_dbuf;
@@ -158,7 +157,7 @@
                         bit<1>       needs_gtpu_decap,
                         qid_t        qid) {
         load_pdr(ctr_id, far_id, needs_gtpu_decap);
-        // we cannot set the qid, since bmv2 does not support it   
+        // we cannot set the qid, since bmv2 does not support it
     }
 
     // These two tables scale well and cover the average case PDR
@@ -267,7 +266,7 @@
             }
 
             // GTPU Decapsulate
-            if (fabric_md.spgw.needs_gtpu_decap == _TRUE) { 
+            if (fabric_md.spgw.needs_gtpu_decap == _TRUE) {
                 decap_gtpu.apply(hdr, fabric_md);
             }
 
@@ -315,7 +314,7 @@
         hdr.gtpu_ipv4.hdr_checksum = 0; // Updated later
 
         hdr.gtpu_udp.setValid();
-        hdr.gtpu_udp.sport = fabric_md.spgw.tunnel_src_port; 
+        hdr.gtpu_udp.sport = fabric_md.spgw.tunnel_src_port;
         hdr.gtpu_udp.dport = UDP_PORT_GTPU;
         hdr.gtpu_udp.len = fabric_md.spgw.ipv4_len
                 + (UDP_HDR_SIZE + GTP_HDR_SIZE);