Fixing topology related internal interface/class tree

- Moved TopologyInternal to more appropriate place

 --- BaseInternalTopology (was TopologyInternal)
  |
  +-- ImmutableInternalTopology (new)
  |
  +-- MutableInternalTopology (new)

- Updated TopologyImpl, etc. to implement appropriate
  *InternalTopology interface

- Added interface adaptor BaseTopologyAdaptor
   BaseInternalTopology (self-contained) -> BaseTopology (object handle)

- TopologyObjects ({Switch,Port,Link,Host}Impl) is now common
  between Mutable and Immutable variant of Topology.
   There were locks for whole Topology, but there weren't any locks
   per TopologyObject. If these instances were on MutableTopology,
   then locking should happen outside these instance method calls.

ONOS-1925

Change-Id: I0a13b4ed4b5a66b7ea8c42212c9504e6bc83d853
diff --git a/src/main/java/net/onrc/onos/core/topology/MutableInternalTopology.java b/src/main/java/net/onrc/onos/core/topology/MutableInternalTopology.java
new file mode 100644
index 0000000..9c6693b
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/topology/MutableInternalTopology.java
@@ -0,0 +1,25 @@
+package net.onrc.onos.core.topology;
+
+// TODO Not sure if we need this at all
+/**
+ * MutableInternalTopology, which this instance can be updated to new view.
+ * <p>
+ * Requires read-lock to access any information on this topology view.
+ * <p>
+ * Note: This is still read-only view of the topology.
+ */
+public interface MutableInternalTopology extends BaseInternalTopology {
+
+    /**
+     * Acquire a read lock on the entire topology. The topology will not
+     * change while readers have the lock. Must be released using
+     * {@link #releaseReadLock()}. This method will block until a read lock is
+     * available.
+     */
+    public void acquireReadLock();
+
+    /**
+     * Release the read lock on the topology.
+     */
+    public void releaseReadLock();
+}