def next
      if (value = @scoped_config[@path_elements.last]).nil?
        raise ConfigKeyException.new(@path_elements)
      elsif value.is_a?(Hash)
        @scoped_config = value
        self
      else
        value
      end
    end
def next
      if (value = @scoped_config[@path_elements.last]).nil?
        raise ConfigKeyException.new(@path_elements)
      elsif value.is_a?(Hash)
        @scoped_config = value
        self
      else
        value
      end
    end
Iterate to the next element in the path

 Algorithm:
 1. Get the last element of the key path
 2. Try to find it in the scoped config
 3. If not present raise an error
 4. If present and is a hash we are not in a config leaf, so the scoped
    config is reset to this new value and self is returned
 5. If present and is a value then return the value