### Description

When storing vectors outside of Lucene's HNSW structure, we take advantage of binary fields.

Currently, we store floats with big endianness. But, if we would instead store them little endian, we get a nice reduction in decoding latency when reading the bytes again for later comparisons.

Here are some benchmark results. Note how Little Endian (LE) and `decodeFloatBufferBulk` is twice as fast as `decodeByteBufferDirectRead` (LE or BE)
```
Benchmark                                                          (byteOrderString)  (floatArraySizes)  Mode  Cnt          Score         Error  Units
ByteBufferFloatDecodeLatencyBenchmark.decodeByteBufferDirectRead                  LE               2048  avgt    5   68325739.360 ±  465582.836  ns/op
ByteBufferFloatDecodeLatencyBenchmark.decodeByteBufferDirectRead                  BE               2048  avgt    5   74776992.386 ±  823331.552  ns/op
ByteBufferFloatDecodeLatencyBenchmark.decodeByteBufferIteration                   LE               2048  avgt    5  117525705.067 ± 1458961.093  ns/op
ByteBufferFloatDecodeLatencyBenchmark.decodeByteBufferIteration                   BE               2048  avgt    5  123655802.233 ± 4235944.321  ns/op
ByteBufferFloatDecodeLatencyBenchmark.decodeFloatBufferBulk                       LE               2048  avgt    5   34669449.786 ±  160521.025  ns/op
ByteBufferFloatDecodeLatencyBenchmark.decodeFloatBufferBulk                       BE               2048  avgt    5  110294944.298 ± 2603621.064  ns/op
ByteBufferFloatDecodeLatencyBenchmark.decodeFloatBufferDirectRead                 LE               2048  avgt    5   68806487.680 ± 3232644.206  ns/op
ByteBufferFloatDecodeLatencyBenchmark.decodeFloatBufferDirectRead                 BE               2048  avgt    5   69113588.627 ±  206808.093  ns/op
ByteBufferFloatDecodeLatencyBenchmark.decodeFloatBufferIteration                  LE               2048  avgt    5  106361490.140 ± 1621399.226  ns/op
ByteBufferFloatDecodeLatencyBenchmark.decodeFloatBufferIteration                  BE               2048  avgt    5  110686951.689 ± 3408080.477  ns/op
```

To make this change, however, requires knowing the version of the index storing the field value. 
server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java
return new ArraySourceValueFetcher(name(), context) {
                @Override
                protected Object parseSourceValue(Object value) {
                    return value;
                }
            };
        }
        @Override
        public DocValueFormat docValueFormat(String format, ZoneId timeZone) {
            throw new IllegalArgumentException(
                "Field [" + name() + "] of type [" + typeName() + "] doesn't support docvalue_fields or aggregations"
            );
        }
        @Override
        public boolean isAggregatable() {
            return false;
        }
        @Override
        public IndexFieldData.Builder fielddataBuilder(FieldDataContext fieldDataContext) {
            return elementType.fielddataBuilder(this, fieldDataContext);
        }
        @Override
        public Query existsQuery(SearchExecutionContext context) {
            return new FieldExistsQuery(name());
        }
        @Override
        public Query termQuery(Object value, SearchExecutionContext context) {
            throw new IllegalArgumentException("Field [" + name() + "] of type [" + typeName() + "] doesn't support term queries");
        }
        public Query createKnnQuery(byte[] queryVector, int numCands, Query filter, Float similarityThreshold) {