Add option to use Hazelcast as datastore for development environment.

This patch will set the default backend as Hazelcast.
To use RAMCloud as backend data store, add -Dnet.onrc.onos.datastore.backend=ramcloud to java option.

- ClientMode: Use existing Hazelcast Instance if it exist.
  - map name starting with datastore:// is now configured to be strong consistent

- add main for manual testing
- follow PMD,etc. where easily possible

- make HZClient Singleton

Change-Id: Ibe2afc3bfddfd7fd567c91477c16cd679fc543d4
diff --git a/src/main/java/net/onrc/onos/datastore/DataStoreClient.java b/src/main/java/net/onrc/onos/datastore/DataStoreClient.java
index 88daa8e..6aeb49e 100644
--- a/src/main/java/net/onrc/onos/datastore/DataStoreClient.java
+++ b/src/main/java/net/onrc/onos/datastore/DataStoreClient.java
@@ -1,10 +1,26 @@
 package net.onrc.onos.datastore;
 
+import net.onrc.onos.datastore.hazelcast.HZClient;
 import net.onrc.onos.datastore.ramcloud.RCClient;
 
+// This class probably need to be a service
 public class DataStoreClient {
+    private static final String BACKEND = System.getProperty("net.onrc.onos.datastore.backend", "hazelcast");
+
+    // Suppresses default constructor, ensuring non-instantiability.
+    private DataStoreClient() {}
+
     public static IKVClient getClient() {
 	// TODO read config and return appropriate IKVClient
-	return RCClient.getClient();
+	switch (BACKEND) {
+	case "ramcloud":
+	    return RCClient.getClient();
+	case "hazelcast":
+	    return HZClient.getClient();
+	default:
+	    return HZClient.getClient();
+	}
     }
+
+
 }