Implement Atomix AsyncAtomicCounterMap, AtomicCounterMap and state machine.

Change-Id: Ifd7f60ae8dcfe7239e034a92654b4ef30ffe46ae
diff --git a/core/api/src/main/java/org/onosproject/store/service/AtomicCounterMapBuilder.java b/core/api/src/main/java/org/onosproject/store/service/AtomicCounterMapBuilder.java
index 56934f4..48c897b3 100644
--- a/core/api/src/main/java/org/onosproject/store/service/AtomicCounterMapBuilder.java
+++ b/core/api/src/main/java/org/onosproject/store/service/AtomicCounterMapBuilder.java
@@ -20,9 +20,18 @@
 /**
  * Builder for AtomicCounterMap.
  */
-public abstract class AtomicCounterMapBuilder
-        extends DistributedPrimitiveBuilder<AtomicCounterMapBuilder, AsyncAtomicCounterMap> {
+public abstract class AtomicCounterMapBuilder<K>
+        extends DistributedPrimitiveBuilder<AtomicCounterMapBuilder<K>, AtomicCounterMap<K>> {
     public AtomicCounterMapBuilder() {
         super(DistributedPrimitive.Type.COUNTER_MAP);
     }
-}
\ No newline at end of file
+
+    /**
+     * Builds an async atomic counter map based on the configuration options
+     * supplied to this builder.
+     *
+     * @return new async atomic counter map
+     * @throws java.lang.RuntimeException if a mandatory parameter is missing
+     */
+    public abstract AsyncAtomicCounterMap<K> buildAsyncMap();
+}