def session(driver_config, &block)
      driver_config = validate_driver_config!(driver_config)
      driver_connection_pool(self, driver_config).with do |kvs_instance|
        block.call(self.new(kvs_instance, driver_config))
      end
    end
def session(driver_config, &block)
      driver_config = validate_driver_config!(driver_config)
      driver_connection_pool(self, driver_config).with do |kvs_instance|
        block.call(self.new(kvs_instance, driver_config))
      end
    end
connect kvs and exec block.
 This function pools the connecting driver.

 @example
   config = {
     :host           => 'localhost', # host of KVS.
     :port           => 6379,        # port of KVS.
     :namespace      => 'Example',   # namespace of avoid a conflict with key
     :timeout_sec    => 5,           # timeout seconds.
     :pool_size      => 5,           # connection pool size.
     :config_key     => :none        # this key is option.(defaults=:none)
                                     #  when set this key.
                                     #  will refer to a connection-pool based on config_key,
                                     #  even if driver setting is the same without this key.
   }
   result = Driver.session(config) do |kvs|
     kvs['example'] = 'abc'
     kvs['example']
   end

   puts result  # => 'abc'

 @param driver_config [Hash] driver_config.
 @param &block [{|driver_instance| #something... }] exec block.
 @return [Object] status