Added new notification framework:
 * The listener has to implement the IEventChannelListener interface.
 * A listener subscribes to a notification channel by using
   IDatagridService.addListener(), and unsubscribes by using
   IDatagridService.removeListener()
   The channel is created and started automatically when the first
   listener is added.
 * A channel can be created by using IDatagridService.createChannel()
   e.g., by the publisher of events. Note that createChannel() automatically
   starts the event channel operation.

 * A publisher uses IEventChannel.addEntry() and removeEntry() to generate
   add/delete events.

 * The listener receives the add/remove events by implementing
   the IEventChannelListener.entryAdded() and entryRemoved() methods.

Example of usage:

Listener/Subscriber:

    private FooFlowPath fooFlowPath = new FooFlowPath();

    datagridService.addListener("mapFooFlowPath", fooFlowPath,
                                   Long.class, FlowPath.class);
...

    class FooFlowPath implements IEventChannelListener<Long, FlowPath> {
        /**
         * Receive a notification that an entry is added.
         *
         * @param value the value for the entry.
         */
        @Override
        public void entryAdded(FlowPath value) {
            // Process the event
        }

        /**
         * Receive a notification that an entry is removed.
         *
         * @param value the value for the entry.
         */
        @Override
        public void entryRemoved(FlowPath value) {
            // Process the event
        }
        ...
    }

Sender/Publisher:

    private IEventChannel<Long, FlowPath> fooFlowPathChannel = null;
    fooFlowPathChannel = datagridService.createChannel("mapFooFlowPath",
            Long.class, FlowPath.class);
    ...

    // Transmit an event
    fooFlowPathChannel.addEntry(flowPath.flowId().value(), flowPath);

Change-Id: Ie3246a4e200d5b6293c1f175df3652cdf571be69
diff --git a/src/main/java/net/onrc/onos/datagrid/IEventChannelListener.java b/src/main/java/net/onrc/onos/datagrid/IEventChannelListener.java
new file mode 100644
index 0000000..3f785ee
--- /dev/null
+++ b/src/main/java/net/onrc/onos/datagrid/IEventChannelListener.java
@@ -0,0 +1,27 @@
+package net.onrc.onos.datagrid;
+
+/**
+ * Event Channel Listener Interface.
+ */
+public interface IEventChannelListener<K, V> {
+    /**
+     * Receive a notification that an entry is added.
+     *
+     * @param value the value for the entry.
+     */
+    void entryAdded(V value);
+
+    /**
+     * Receive a notification that an entry is removed.
+     *
+     * @param value the value for the entry.
+     */
+    void entryRemoved(V value);
+
+    /**
+     * Receive a notification that an entry is updated.
+     *
+     * @param value the value for the entry.
+     */
+    void entryUpdated(V value);
+}