MastershipEvent carries RoleInfo as a subject

Change-Id: I8f850ad1f21bfbdc23fedda1a53f4ccedb1b8d32
diff --git a/core/api/src/main/java/org/onlab/onos/cluster/RoleInfo.java b/core/api/src/main/java/org/onlab/onos/cluster/RoleInfo.java
index 45b96ab..767884d 100644
--- a/core/api/src/main/java/org/onlab/onos/cluster/RoleInfo.java
+++ b/core/api/src/main/java/org/onlab/onos/cluster/RoleInfo.java
@@ -3,10 +3,11 @@
 import java.util.List;
 import java.util.Objects;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.collect.ImmutableList;
 
 /**
- * A container for detailed role information for a device,
+ * An immutable container for role information for a device,
  * within the current cluster. Role attributes include current
  * master and a preference-ordered list of backup nodes.
  */
@@ -52,12 +53,9 @@
 
     @Override
     public String toString() {
-        final StringBuilder builder = new StringBuilder();
-        builder.append("master:").append(master).append(",");
-        builder.append("backups:");
-        for (NodeId n : backups) {
-            builder.append(" ").append(n);
-        }
-        return builder.toString();
+        return MoreObjects.toStringHelper(this.getClass())
+            .add("master", master)
+            .add("backups", backups)
+            .toString();
     }
 }