### Description

When completing a zero_shot classification task, there is the input sequence (provided by the user), and labels (also provided by the user). 

Tokenization as it is done now tokenizes the input sequence len(labels) times. We should really only do it once and pass those tokenized values to request builder. 

Some of the changes introduce here: https://github.com/elastic/elasticsearch/pull/84777 should make implementing this simpler (as there will be a unified temporary tokenization result object).
x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/inference/nlp/tokenizers/NlpTokenizer.java
tokenPositionMapSeq2
        ).build(seq1 + seq2, isTruncated, tokens, -1, sequenceId);
    }
    public abstract NlpTask.RequestBuilder requestBuilder();
    public abstract OptionalInt getPadTokenId();
    public abstract String getPadToken();
    public abstract OptionalInt getMaskTokenId();
    public abstract String getMaskToken();
    public int getSpan() {
        return -1;
    }
    abstract TokenizationResult.TokensBuilder createTokensBuilder(int clsTokenId, int sepTokenId, boolean withSpecialTokens);
    abstract InnerTokenization innerTokenize(String seq);
    public static NlpTokenizer build(Vocabulary vocabulary, Tokenization params) {
        ExceptionsHelper.requireNonNull(params, TOKENIZATION);
        ExceptionsHelper.requireNonNull(vocabulary, VOCABULARY);
        if (params instanceof BertTokenization) {
            return BertTokenizer.builder(vocabulary.get(), params).build();
        }
        if (params instanceof MPNetTokenization) {
            return MPNetTokenizer.mpBuilder(vocabulary.get(), params).build();
        }
        if (params instanceof RobertaTokenization robertaTokenization) {
            return RobertaTokenizer.builder(vocabulary.get(), vocabulary.merges(), robertaTokenization).build();
        }
        throw new IllegalArgumentException("unknown tokenization type [" + params.getName() + "]");
    }
    record InnerTokenization(List<? extends DelimitedToken.Encoded> tokens, List<Integer> tokenPositionMap) {}
}