def register(name, fn = nil, &block)
      if contain?(name)
        raise FunctionAlreadyRegisteredError, "Function #{name} is already defined"
      end
      @store = store.register(name, fn, &block)
      self
    end
def register(name, fn = nil, &block)
      if contain?(name)
        raise FunctionAlreadyRegisteredError, "Function #{name} is already defined"
      end
      @store = store.register(name, fn, &block)
      self
    end
Register a new function

 @example
   store.register(:to_json, -> v { v.to_json })
   store.register(:to_json) { |v| v.to_json }