### Description

Not sure if it's a regression or not but when grouping by just one keyword field, the null group is not returned:
```
from employees | stats by gender | sort gender 
```
should return [F, M, null] yet only [F, M] are.

It looks like the hashing function (whether ordinal or not) ends up dropping null along the way. 
This doesn't happen with multiple keys as long as the keyword is not the first key:

```
from employees | stats by languages, gender | sort desc
```

```
null | null
null | F
null | M
etc...
```

x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionIT.java
assertEquals("keyword", results.columns().get(2).type());
            record Group(Long data, Long count, String color) {
                Group(Long data, Long count) {
                    this(data, count, "yellow");
                }
            }
            List<Group> expectedGroups = List.of(
                
                new Group(null, 50L),
                new Group(null, 60L),
                new Group(null, 70L),
                new Group(null, 80L),
                new Group(null, 90L),
                new Group(null, 100L),
                new Group(10L, null),
                new Group(10L, 100L),
                new Group(9L, null),
                new Group(9L, 90L)
            );
            List<Group> actualGroups = getValuesList(results).stream()
                .map(l -> new Group((Long) l.get(0), (Long) l.get(1), (String) l.get(2)))
                .toList();
            assertThat(actualGroups, equalTo(expectedGroups));
        }
    }
    /**
     * This test covers the scenarios where Lucene is throwing a {@link org.apache.lucene.search.CollectionTerminatedException} when
     * it's signaling that it could stop collecting hits early. For example, in the case the index is sorted in the same order as the query.
     * The {@link org.elasticsearch.compute.lucene.LuceneTopNSourceOperator#getOutput()} is handling this exception by
     * ignoring it (which is the right thing to do) and sort of cleaning up and moving to the next docs collection.