**Use case**
ClickHouse as a web server becomes a viable scenario.
(At least in backoffice).

**Describe the solution you'd like**
Add this field.

**Additional context**
It's in question how to name it. The original HTTP specs has the famous typo in it and name it `referer`. While JavaScript has this typo fixed and name it `referrer`.

ClientInfo & client_info = context.getClientInfo();
    client_info.query_kind = ClientInfo::QueryKind::INITIAL_QUERY;
    client_info.interface = ClientInfo::Interface::HTTP;
    ClientInfo::HTTPMethod http_method = ClientInfo::HTTPMethod::UNKNOWN;
    if (request.getMethod() == Poco::Net::HTTPServerRequest::HTTP_GET)
        http_method = ClientInfo::HTTPMethod::GET;
    else if (request.getMethod() == Poco::Net::HTTPServerRequest::HTTP_POST)
        http_method = ClientInfo::HTTPMethod::POST;
    client_info.http_method = http_method;
    client_info.http_user_agent = request.get("User-Agent", "");
    client_info.forwarded_for = request.get("X-Forwarded-For", "");
    
    context.setUser(user, password, request.clientAddress());
    if (!quota_key.empty())
        context.setQuotaKey(quota_key);
    
    client_info.initial_user = client_info.current_user;
    client_info.initial_address = client_info.current_address;
    
    
    std::shared_ptr<NamedSession> session;
    String session_id;
    std::chrono::steady_clock::duration session_timeout;
    bool session_is_set = params.has("session_id");
    const auto & config = server.config();
    if (session_is_set)
    {
        session_id = params.get("session_id");
        session_timeout = parseSessionTimeout(config, params);