### Description

Clusters can have thousands of ILM policies. 
`GET _ilm/policy` returns all of them and runs on the master node.

This proposes we chunk the response for better memory usage and clients experience.

Relates to https://github.com/elastic/elasticsearch/issues/96568
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/action/GetLifecycleAction.java
public static final GetLifecycleAction INSTANCE = new GetLifecycleAction();
    public static final String NAME = "cluster:admin/ilm/get";
    protected GetLifecycleAction() {
        super(NAME, GetLifecycleAction.Response::new);
    }
    public static class Response extends ActionResponse implements ToXContentObject {
        private List<LifecyclePolicyResponseItem> policies;
        public Response(StreamInput in) throws IOException {
            super(in);
            this.policies = in.readList(LifecyclePolicyResponseItem::new);
        }
        public Response(List<LifecyclePolicyResponseItem> policies) {
            this.policies = policies;
        }
        public List<LifecyclePolicyResponseItem> getPolicies() {
            return policies;
        }
        @Override
        public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
            builder.startObject();
            for (LifecyclePolicyResponseItem item : policies) {
                builder.startObject(item.getLifecyclePolicy().getName());
                builder.field("version", item.getVersion());
                builder.field("modified_date", item.getModifiedDate());
                builder.field("policy", item.getLifecyclePolicy());
                builder.field("in_use_by", item.getUsage());