[ONOS-5070] Adds mirroring functionality.

Changes:
- Adds mirroring behaviour;
- Adds mirroring description;
- Adds mirroring name;
- Implements for Ovsdb the mirroring;
- Adds OvsdbMirror entity;
- Adds constants related to Mirror table;
- Fix one issue related to Mirror table
- Extends OvsdbClientService introducing mirroring;
- Implements mirroring functionality in DefaulOvsdbClient;
- Support for different types of device id

Change-Id: Ie291f49b3c61b7998010f555ae11deb8c021063d
diff --git a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
index 5a0676b..a5ba5a3 100644
--- a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
+++ b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
@@ -19,6 +19,8 @@
 import org.onlab.packet.IpAddress;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.behaviour.ControllerInfo;
+import org.onosproject.net.behaviour.MirroringStatistics;
+import org.onosproject.net.behaviour.MirroringName;
 import org.onosproject.ovsdb.rfc.jsonrpc.OvsdbRpc;
 import org.onosproject.ovsdb.rfc.message.TableUpdates;
 import org.onosproject.ovsdb.rfc.notation.Row;
@@ -40,6 +42,41 @@
     OvsdbNodeId nodeId();
 
     /**
+     * Creates a mirror port. Mirrors the traffic
+     * that goes to selectDstPort or comes from
+     * selectSrcPort or packets containing selectVlan
+     * to mirrorPort or to all ports that trunk mirrorVlan.
+     *
+     * @param  bridgeName the name of the bridge
+     * @param mirror the OVSDB mirror description
+     * @return true if mirror creation is successful, false otherwise
+     */
+    boolean createMirror(String bridgeName, OvsdbMirror mirror);
+
+    /**
+     * Gets the Mirror uuid.
+     *
+     * @param mirrorName mirror name
+     * @return mirror uuid, empty if no uuid is found
+     */
+    String getMirrorUuid(String mirrorName);
+
+    /**
+     * Gets mirroring statistics of the device.
+     *
+     * @param deviceId target device id
+     * @return set of mirroring statistics; empty if no mirror is found
+     */
+    Set<MirroringStatistics> getMirroringStatistics(DeviceId deviceId);
+
+    /**
+     * Drops the configuration for mirror.
+     *
+     * @param mirroringName
+     */
+    void dropMirror(MirroringName mirroringName);
+
+    /**
      * Creates a tunnel port with given options.
      *
      * @deprecated version 1.7.0 - Hummingbird