Fixed an issue in basic host and basic link config validations.

Added validation for basic device config.

Made all concrete configurations final (as they should be).

Changed stc to use the new onos-netcfg as a method to re-locate and name devices and hosts.

Change-Id: I372e6c7e6c0fa6fa52301568af73342aaae6347b
diff --git a/core/api/src/main/java/org/onosproject/net/config/Config.java b/core/api/src/main/java/org/onosproject/net/config/Config.java
index 0a3d87f..aac1320 100644
--- a/core/api/src/main/java/org/onosproject/net/config/Config.java
+++ b/core/api/src/main/java/org/onosproject/net/config/Config.java
@@ -95,15 +95,15 @@
      * <p>
      * Default implementation returns true.
      * Subclasses are expected to override this with their own validation.
-     * </p>
+     * Implementations are free to throw a RuntimeException if data is invalid.
+     * * </p>
      *
      * @return true if the data is valid; false otherwise
+     * @throws RuntimeException if configuration is invalid or completely foobar
      */
     public boolean isValid() {
-        // TODO: figure out what assertions could be made in the base class
-        // NOTE: The thought is to have none, but instead to provide a set
-        // of predicates to allow configs to test validity of present fields,
-        // e.g.:
+        // Derivatives should use the provided set of predicates to test
+        // validity of their fields, e.g.:
         //      isString(path)
         //      isBoolean(path)
         //      isNumber(path, [min, max])