### Description

Implement health indicator for shard allocation.
This indicator should have same or similar behavior to existing health endpoint.

Aspects to be considered:
* nodes scheduled for reboot should not cause cluster to go yellow (but could cause it go red)
* huge number of unallocated shards should not cause response bloat.
* consider showing allocation explain if possible

Rel: TBD
server/src/main/java/org/elasticsearch/cluster/metadata/NodesShutdownMetadata.java
this.nodesDiff = DiffableUtils.readJdkMapDiff(
                in,
                DiffableUtils.getStringKeySerializer(),
                SingleNodeShutdownMetadata::new,
                NodeShutdownMetadataDiff::readNodesDiffFrom
            );
        }
        @Override
        public Metadata.Custom apply(Metadata.Custom part) {
            TreeMap<String, SingleNodeShutdownMetadata> newNodes = new TreeMap<>(nodesDiff.apply(((NodesShutdownMetadata) part).nodes));
            return new NodesShutdownMetadata(newNodes);
        }
        @Override
        public String getWriteableName() {
            return TYPE;
        }
        @Override
        public void writeTo(StreamOutput out) throws IOException {
            nodesDiff.writeTo(out);
        }
        static Diff<SingleNodeShutdownMetadata> readNodesDiffFrom(StreamInput in) throws IOException {
            return SimpleDiffable.readDiffFrom(SingleNodeShutdownMetadata::new, in);
        }
        @Override
        public Version getMinimalSupportedVersion() {
            return NODE_SHUTDOWN_VERSION;
        }
    }
}