### Description

It should be enough to have ShardId + nodeId key in `routingToDataPath` to find the necessary data path. 
Changing the key would allow us to minimize the size of ClusterInfo size and find the data path when shard changes its status.

`ClusterInfo` might be sent over the wire when cluster allocation explain is executed with `includeDiskInfo=true`.
ShardRouting -> ShardId + nodeId conversion is trivial. The oposit would require additional information that could be faked.

Current key is also used in here:
https://github.com/elastic/elasticsearch/blob/9ebbe1c62bf0157d332f20f392544a1921a710df/server/src/main/java/org/elasticsearch/cluster/ClusterInfo.java#L149-L154
where it produces a string with ShardRouting#shortSummary that is excessive and might be simplified to ShardId + nodeId as well
server/src/test/java/org/elasticsearch/cluster/routing/allocation/decider/DiskThresholdDeciderUnitTests.java
assertEquals(Decision.Type.NO, decision.type());
        double usedPercentage = 100.0 - (100.0 * freeBytes / totalBytes);
        assertThat(
            decision.getExplanation(),
            containsString(
                testMaxHeadroom
                    ? "allocating the shard to this node will bring the node above the high watermark cluster setting "
                        + "[cluster.routing.allocation.disk.watermark.high.max_headroom=150gb] "
                        + "and cause it to have less than the minimum required [150gb] of free space "
                        + "(free: ["
                        + ByteSizeValue.ofBytes(freeBytes)
                        + "], used: ["
                        + Strings.format1Decimals(usedPercentage, "%")
                        + "], estimated shard size: ["
                        + ByteSizeValue.ofBytes(shardSize)
                        + "])"
                    : "allocating the shard to this node will bring the node above the high watermark cluster setting "
                        + "[cluster.routing.allocation.disk.watermark.high=90%] "
                        + "and cause it to have less than the minimum required [10b] of free space "
                        + "(free: ["
                        + freeBytes
                        + "b], used: ["
                        + Strings.format1Decimals(usedPercentage, "%")
                        + "], estimated shard size: ["
                        + shardSize
                        + "b])"
            )
        );
    }
    public void testCannotAllocateDueToLackOfDiskResourcesWithPercentages() {