AETHER-233 Move IntProgrammable behavior to core APIs

Before, the behavior interface and other concrete classes used it by
were part of the inbandtelemetry app. To make this behavior available to
third-party apps (such as the fabric-tna pipeconf), we move it to the
core APIs.

In this process, we do some clean-up of the behavior API. For example,
we remove references to network-level semantics (as behaviors should
only abstract device-level ones). That helps in reducing the number of
classes required to maintain in the core.

Change-Id: I3ba24ea93cdfea115cee454d5e921e15ec17eee9
diff --git a/apps/inbandtelemetry/api/src/main/java/org/onosproject/inbandtelemetry/api/IntIntent.java b/apps/inbandtelemetry/api/src/main/java/org/onosproject/inbandtelemetry/api/IntIntent.java
index 37e1e29..6e2e92b 100644
--- a/apps/inbandtelemetry/api/src/main/java/org/onosproject/inbandtelemetry/api/IntIntent.java
+++ b/apps/inbandtelemetry/api/src/main/java/org/onosproject/inbandtelemetry/api/IntIntent.java
@@ -16,6 +16,7 @@
 package org.onosproject.inbandtelemetry.api;
 
 import com.google.common.annotations.Beta;
+import org.onosproject.net.behaviour.inbandtelemetry.IntMetadataType;
 import org.onosproject.net.flow.DefaultTrafficSelector;
 import org.onosproject.net.flow.TrafficSelector;
 
@@ -40,55 +41,17 @@
  */
 @Beta
 public final class IntIntent {
-    /**
-     * Represents a type of INT metadata.
-     */
-    public enum IntMetadataType {
-        /**
-         * The unique ID of a switch.
-         */
-        SWITCH_ID,
-        /**
-         * The ports on which the INT packet was received and sent out.
-         */
-        L1_PORT_ID,
-        /**
-         * Time taken for the INT packet to be switched within the device.
-         */
-        HOP_LATENCY,
-        /**
-         * The build-up of traffic in the queue that the INT packet observes
-         * in the device while being forwarded.
-         */
-        QUEUE_OCCUPANCY,
-        /**
-         * The device local time when the INT packet was received on the ingress port.
-         */
-        INGRESS_TIMESTAMP,
-        /**
-         * The device local time when the INT packet was processed by the egress port.
-         */
-        EGRESS_TIMESTAMP,
-        /**
-         * The logical ports on which the INT packet was received and sent out.
-         */
-        L2_PORT_ID,
-        /**
-         * Current utilization of the egress port via witch the INT packet was sent out.
-         */
-        EGRESS_TX_UTIL
-    }
 
     /**
      * Represents an INT header type.
      */
     public enum IntHeaderType {
         /**
-         * Intemediate devices must process this type of INT header.
+         * Intermediate devices must process this type of INT header.
          */
         HOP_BY_HOP,
         /**
-         * Intemediate devices must ignore this type of INT header.
+         * Intermediate devices must ignore this type of INT header.
          */
         DESTINATION
     }
@@ -102,7 +65,7 @@
          */
         TRACKED_FLOW,
         /**
-         * Reports for all dropeed packets matching a drop watchlist.
+         * Reports for all dropped packets matching a drop watchlist.
          */
         DROPPED_PACKET,
         /**