### 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/test/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapperTests.java
Object value = elementType == ElementType.BYTE
                ? randomList(dims, dims, ESTestCase::randomByte)
                : randomList(dims, dims, ESTestCase::randomFloat);
            return new SyntheticSourceExample(value, value, this::mapping);
        }
        private void mapping(XContentBuilder b) throws IOException {
            b.field("type", "dense_vector");
            b.field("dims", dims);
            if (elementType == ElementType.BYTE || randomBoolean()) {
                b.field("element_type", elementType.toString());
            }
            if (indexed) {
                b.field("index", true);
                b.field("similarity", "l2_norm");
                if (indexOptionsSet) {
                    b.startObject("index_options");
                    b.field("type", "hnsw");
                    b.field("m", 5);
                    b.field("ef_construction", 50);
                    b.endObject();
                }
            }
        }
        @Override
        public List<SyntheticSourceInvalidExample> invalidExample() {
            return List.of();
        }
    }
}