### Description

`SearchResponse.Clusters` currently uses a `HashMap<String, AtomicReference>` for storing Cluster objects. The AtomicReference CAS swaps are done in a do/while loop in most cases (e.g., in `CCSSingleCoordinatorSearchProgressListener`).

This can be replaced with a `ConcurrentHashMap` in conjunction with either `compute()` method or the `replace(key, assumed_previous_value, value)` method for atomically swapping in a new Cluster object with a CAS operation, assuring that the updates don't lose data from competing threads doing separate Cluster object updates.

See: https://github.com/elastic/elasticsearch/pull/98457/files#r1310467586 
server/src/main/java/org/elasticsearch/action/search/SearchResponse.java
public int getClusterStateCount(Cluster.Status status) {
            if (clusterInfo.isEmpty()) {
                return switch (status) {
                    case SUCCESSFUL -> successful;
                    case SKIPPED -> skipped;
                    default -> 0;
                };
            } else {
                return determineCountFromClusterInfo(cluster -> cluster.getStatus() == status);
            }
        }
        /**
         * When Clusters is using the clusterInfo map (and Cluster objects are being updated in various
         * ActionListener threads), this method will count how many clusters match the passed in predicate.
         *
         * @param predicate to evaluate
         * @return count of clusters matching the predicate
         */
        private int determineCountFromClusterInfo(Predicate<Cluster> predicate) {
            return (int) clusterInfo.values().stream().filter(c -> predicate.test(c.get())).count();
        }
        /**
         * @return whether this search was a cross cluster search done with ccsMinimizeRoundtrips=true
         */
        public Boolean isCcsMinimizeRoundtrips() {
            return ccsMinimizeRoundtrips;
        }
        /**
         * @param clusterAlias The cluster alias as specified in the cluster collection
         * @return Cluster object associated with teh clusterAlias or null if not present