Added UI_TYPE annotation key, and augmented BasicDeviceConfig and BasicHostConfig to support defining a custom "uiType" value to override the glyph used in rendering on the Topology View.

Change-Id: I615540419bce6e89e3761ef6ed3b9906be64b266
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
index 985cb17..c2c14f2 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
@@ -253,9 +253,13 @@
     // Produces a device event message to the client.
     protected ObjectNode deviceMessage(DeviceEvent event) {
         Device device = event.subject();
+        String uiType = device.annotations().value(AnnotationKeys.UI_TYPE);
+        String devType = uiType != null ? uiType :
+                device.type().toString().toLowerCase();
+
         ObjectNode payload = objectNode()
                 .put("id", device.id().toString())
-                .put("type", device.type().toString().toLowerCase())
+                .put("type", devType)
                 .put("online", deviceService.isAvailable(device.id()))
                 .put("master", master(device.id()));
 
@@ -297,7 +301,7 @@
     protected ObjectNode hostMessage(HostEvent event) {
         Host host = event.subject();
         Host prevHost = event.prevSubject();
-        String hostType = host.annotations().value(AnnotationKeys.TYPE);
+        String hostType = host.annotations().value(AnnotationKeys.UI_TYPE);
 
         ObjectNode payload = objectNode()
                 .put("id", host.id().toString())