ONOS-6257: fixing Region-peer-location function...

- corrected UiRegion.isRoot() implementation
- added to/from-compact-strings for LayoutLocation, so we can encode
   a list of them in an annotation
- Fixed bug in DistributedRegionStore which was emiting events that
   had a null region as subject.

Change-Id: I547e0c7f62385b85b191b8d63e6b569196623b84
diff --git a/core/store/dist/src/main/java/org/onosproject/store/region/impl/DistributedRegionStore.java b/core/store/dist/src/main/java/org/onosproject/store/region/impl/DistributedRegionStore.java
index e00af16..c8b5299 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/region/impl/DistributedRegionStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/region/impl/DistributedRegionStore.java
@@ -247,9 +247,12 @@
         @Override
         public void event(MapEvent<RegionId, Set<DeviceId>> event) {
             if (event.type() != MapEvent.Type.REMOVE) {
-                notifyDelegate(new RegionEvent(REGION_MEMBERSHIP_CHANGED,
-                        regionsById.get(event.key()),
-                        event.newValue().value()));
+                Region r = regionsById.get(event.key());
+                if (r != null) {
+                    notifyDelegate(new RegionEvent(REGION_MEMBERSHIP_CHANGED,
+                                                   r,
+                                                   event.newValue().value()));
+                }
             }
         }
     }