[CORD-458] Updates ARP handler

Changes:
- SR application uses NRM;
- Adds hooks for ND protocol;
- Updates ARP handler to better leverage on NRM;
- Reworks to take into account IPv4/IPv6 together;

Change-Id: Iab55b8c5ef7d973928d8ad47e2c2a482fb9c5c8a
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/McastHandler.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/McastHandler.java
index 36dc26b..f95addc 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/McastHandler.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/McastHandler.java
@@ -376,7 +376,7 @@
         }
 
         // Reuse unicast VLAN if the port has subnet configured
-        Ip4Prefix portSubnet = srManager.deviceConfiguration.getPortSubnet(deviceId, port);
+        Ip4Prefix portSubnet = srManager.deviceConfiguration.getPortIPv4Subnet(deviceId, port);
         VlanId unicastVlan = srManager.getSubnetAssignedVlanId(deviceId, portSubnet);
         final VlanId finalVlanId = (unicastVlan != null) ? unicastVlan : assignedVlan;
 
@@ -764,7 +764,7 @@
         // Reuse unicast VLAN if the port has subnet configured
         if (cp != null) {
             Ip4Prefix portSubnet = srManager.deviceConfiguration
-                    .getPortSubnet(cp.deviceId(), cp.port());
+                    .getPortIPv4Subnet(cp.deviceId(), cp.port());
             VlanId unicastVlan = srManager.getSubnetAssignedVlanId(cp.deviceId(), portSubnet);
             if (unicastVlan != null) {
                 return unicastVlan;
@@ -791,7 +791,7 @@
             for (PortNumber port : ports) {
                 // Spine-facing port should have no subnet and no xconnect
                 if (srManager.deviceConfiguration != null &&
-                        srManager.deviceConfiguration.getPortSubnet(ingressDevice, port) == null &&
+                        srManager.deviceConfiguration.getPortSubnets(ingressDevice, port).isEmpty() &&
                         !srManager.xConnectHandler.hasXConnect(new ConnectPoint(ingressDevice, port))) {
                     return port;
                 }