def push_data(key, value)
      if (not key.kind_of?(String)) or (not value.kind_of?(String))
        raise ArgumentError::new('header key and value must be string')
      end
      @data[key] = value
      self
    end
def push_data(key, value)
      if (not key.kind_of?(String)) or (not value.kind_of?(String))
        raise ArgumentError::new('header key and value must be string')
      end
      @data[key] = value
      self
    end
initialize with hash
 @param [Hash] data
 add key-value data to this header.
 @param [String] key key for header
 @param [String] value value for key
 @return [Header] self