Enhanced layout service and hooked-in the ui topo session.

Change-Id: I357143766deb3f0d697a3e7963a53968ccdf3bc8
diff --git a/core/api/src/main/java/org/onosproject/ui/UiTopoLayoutService.java b/core/api/src/main/java/org/onosproject/ui/UiTopoLayoutService.java
index 989c807..0f2c273 100644
--- a/core/api/src/main/java/org/onosproject/ui/UiTopoLayoutService.java
+++ b/core/api/src/main/java/org/onosproject/ui/UiTopoLayoutService.java
@@ -26,6 +26,14 @@
 public interface UiTopoLayoutService {
 
     /**
+     * Returns the top-level root layout, which always exists and cannot
+     * be removed or associated directly with a region.
+     *
+     * @return root topology layout
+     */
+    UiTopoLayout getRootLayout();
+
+    /**
      * Returns the set of available layouts.
      *
      * @return set of available layouts
@@ -40,15 +48,23 @@
      */
     boolean addLayout(UiTopoLayout layout);
 
-
     /**
      * Returns the layout with the specified identifier.
+     *
      * @param layoutId layout identifier
      * @return layout or null if no such layout is found
      */
     UiTopoLayout getLayout(UiTopoLayoutId layoutId);
 
     /**
+     * Returns the set of the child layouts of the specified layout.
+     *
+     * @param layoutId layout identifier
+     * @return set of child layouts; empty set if layout has no children
+     */
+    Set<UiTopoLayout> getChildren(UiTopoLayoutId layoutId);
+
+    /**
      * Removes a layout from the system.
      *
      * @param layout the layout to remove