Lucene 9.8 updates the vector dimension limit overridability. Moving it to the codec. 

We should switch our override to do this correctly now, instead of returning a `FieldType` overriding the value.

For now, this commit would belong in the `lucene_snapshot` branch.
test/framework/src/main/java/org/elasticsearch/index/mapper/MapperServiceTestCase.java
.getLoader(leafReader.getContext(), null);
        storedFields.advanceTo(0);
        return storedFields;
    }
    protected void validateRoundTripReader(String syntheticSource, DirectoryReader reader, DirectoryReader roundTripReader)
        throws IOException {
        assertReaderEquals(
            "round trip " + syntheticSource,
            new FieldMaskingReader(SourceFieldMapper.RECOVERY_SOURCE_NAME, reader),
            new FieldMaskingReader(SourceFieldMapper.RECOVERY_SOURCE_NAME, roundTripReader)
        );
    }
    protected final XContentBuilder syntheticSourceMapping(CheckedConsumer<XContentBuilder, IOException> buildFields) throws IOException {
        return topMapping(b -> {
            b.startObject("_source").field("mode", "synthetic").endObject();
            b.startObject("properties");
            buildFields.accept(b);
            b.endObject();
        });
    }
    protected final XContentBuilder syntheticSourceFieldMapping(CheckedConsumer<XContentBuilder, IOException> buildField)
        throws IOException {
        return syntheticSourceMapping(b -> {
            b.startObject("field");
            buildField.accept(b);
            b.endObject();
        });
    }
}