Sketching out what link-state addition would look like; quite easy until we get to the distributed store.
Added unit tests to provide durable-nondurable transitions.
FIxed issue where link could be accidentally activated.
Renamed parameter.

Change-Id: I8aa19a6583ec50dbf28769995f0a8ea9be9a4daa
diff --git a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/DefaultLinkSerializer.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/DefaultLinkSerializer.java
index a79e4d4..a787012 100644
--- a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/DefaultLinkSerializer.java
+++ b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/DefaultLinkSerializer.java
@@ -15,15 +15,15 @@
  */
 package org.onlab.onos.store.serializers;
 
-import org.onlab.onos.net.ConnectPoint;
-import org.onlab.onos.net.DefaultLink;
-import org.onlab.onos.net.Link.Type;
-import org.onlab.onos.net.provider.ProviderId;
-
 import com.esotericsoftware.kryo.Kryo;
 import com.esotericsoftware.kryo.Serializer;
 import com.esotericsoftware.kryo.io.Input;
 import com.esotericsoftware.kryo.io.Output;
+import org.onlab.onos.net.ConnectPoint;
+import org.onlab.onos.net.DefaultLink;
+import org.onlab.onos.net.Link.State;
+import org.onlab.onos.net.Link.Type;
+import org.onlab.onos.net.provider.ProviderId;
 
 /**
  * Kryo Serializer for {@link DefaultLink}.
@@ -44,6 +44,8 @@
         kryo.writeClassAndObject(output, object.src());
         kryo.writeClassAndObject(output, object.dst());
         kryo.writeClassAndObject(output, object.type());
+        kryo.writeClassAndObject(output, object.state());
+        kryo.writeClassAndObject(output, object.isDurable());
     }
 
     @Override
@@ -52,6 +54,8 @@
         ConnectPoint src = (ConnectPoint) kryo.readClassAndObject(input);
         ConnectPoint dst = (ConnectPoint) kryo.readClassAndObject(input);
         Type linkType = (Type) kryo.readClassAndObject(input);
-        return new DefaultLink(providerId, src, dst, linkType);
+        State state = (State) kryo.readClassAndObject(input);
+        boolean isDurable = (boolean) kryo.readClassAndObject(input);
+        return new DefaultLink(providerId, src, dst, linkType, state, isDurable);
     }
 }
diff --git a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoNamespaces.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoNamespaces.java
index 07db4a6..7043a61 100644
--- a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoNamespaces.java
+++ b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoNamespaces.java
@@ -164,6 +164,7 @@
                     DefaultPortDescription.class,
                     Element.class,
                     Link.Type.class,
+                    Link.State.class,
                     Timestamp.class,
                     HostId.class,
                     HostDescription.class,