CORD-1578 CORD-1708 Handle dual single homed router and single dual homed router

In addition
    - Carry all alternatives in ROUTE_UPDATED and ROUTE_REMOVED event
    - More unit tests
    - More debug messages
    - Fix routing table out-of-sync issue in MockRoutingService
    - Fix populateRoute/revokeRoute mastership issue

Change-Id: I22d537625b570b09ecd4e22e6e14bb1ee27f8bcb
diff --git a/apps/route-service/app/src/main/java/org/onosproject/routeservice/impl/DefaultResolvedRouteStore.java b/apps/route-service/app/src/main/java/org/onosproject/routeservice/impl/DefaultResolvedRouteStore.java
index 4981932..725a7a9 100644
--- a/apps/route-service/app/src/main/java/org/onosproject/routeservice/impl/DefaultResolvedRouteStore.java
+++ b/apps/route-service/app/src/main/java/org/onosproject/routeservice/impl/DefaultResolvedRouteStore.java
@@ -143,7 +143,7 @@
                                 immutableAlternatives);
                     } else {
                         return new RouteEvent(RouteEvent.Type.ROUTE_UPDATED, route,
-                                oldRoute, immutableAlternatives);
+                                oldRoute, immutableAlternatives, oldRoutes);
                     }
                 }
 
@@ -185,11 +185,11 @@
                 String key = createBinaryString(prefix);
 
                 ResolvedRoute route = routeTable.getValueForExactKey(key);
-                alternativeRoutes.remove(prefix);
+                Set<ResolvedRoute> alternatives = alternativeRoutes.remove(prefix);
 
                 if (route != null) {
                     routeTable.remove(key);
-                    return new RouteEvent(RouteEvent.Type.ROUTE_REMOVED, route);
+                    return new RouteEvent(RouteEvent.Type.ROUTE_REMOVED, route, alternatives);
                 }
                 return null;
             }