Adding support for Consul backend

This PR enables Consul to be used as the backing store in addition to etcd. Basically replace direct use of the etcdClient with a `StoreClient` interface, which both Consul and etcd can implement. Adding some flags to switch the mode.