### Elasticsearch Version

8.7+ 

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

Darwin

### Problem Description

The `downsample` action currently works as follows (high level details for a downsample action configured in the `warm` phase):

1. create a new index, the target index where the downsampled result will live. It has the name in the form “downsample-random-source_index_name” (this happens as part of the `rollup` ILM step)
2. copies the ILM execution step from the original index to the downsampled index (this will make the downsampled index appear as if it’s in the warm phase in ILM - same phase as the source index)
3. Replace the original index in the data stream with the downsampled index
4. Delete original index
5. Make the downsample index “look” like the original index (this is done by `SwapAliasesAndDeleteSourceIndexStep` - essentially transfer all aliases the original index had and the name of the original index, as aliases on the downsampled index ) 

Now, on step 1. we copy **most settings** the source index has on the target (`downsample-*`) index. We skip some though: https://github.com/elastic/elasticsearch/blob/main/x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/downsample/TransportDownsampleAction.java#L653

We do NOT currently skip `index.lifecycle.name`. This means that when the `downsample-*` index is created it'll have its own lifecycle policy and ILM will start executing it for it. 
This, at best, creates confusion as rollover will start failing for the `downsample-*` index due to not being bootstrapped for rollover. At worst, it could receive a policy that's been configured to mount the index as searchable snapshot, shrink, or other more disruptive action.

Logs will show things like:
```
downsample-ra12-.ds-metrics.testing-2023.06.09-000005) with ILM state from [null] to [{"phase":"new","action":"complete","name":"complete"}] in policy [metrics-ilm-policy]
...
downsample-ra12-.ds-metrics.testing-2023.06.09-000005) with ILM state from [{"phase":"hot","action":"rollover","name":"check-rollover-ready"}] to [{"phase":"hot","action":"rollover","name":"ERROR"}] in policy [metrics-ilm-policy]
	setting [index.lifecycle.rollover_alias] for index [downsample-ra12-.ds-metrics.testing-2023.06.09-000005] is empty or not defined
```

This proposes we fix this by creating the `downsample-*` index **without any** `index.lifecycle.name` setting configured and introducing another ILM step that will copy the `index.lifecycle.name` setting from the source index to the downsample index when we're ready for it to start its lifecycle - namely after step 2 in the high level description above (after `CopyExecutionStateStep`). Note we have a step already for this in ILM `CopySettingsStep` 

### Steps to Reproduce

Run downsample with ILM and check the logs for the `downsample-*` index 
https://www.elastic.co/guide/en/elasticsearch/reference/current/downsampling-ilm.html

### Logs (if relevant)

_No response_
x-pack/plugin/rollup/src/test/java/org/elasticsearch/xpack/downsample/DownsampleActionSingleNodeTests.java
rollup(sourceIndex, rollupIndex, config);
        assertRollupIndex(sourceIndex, rollupIndex, config);
    }
    public void testCannotRollupToExistingIndex() throws Exception {
        DownsampleConfig config = new DownsampleConfig(randomInterval());
        prepareSourceIndex(sourceIndex);
        
        assertAcked(indicesAdmin().prepareCreate(rollupIndex).setSettings(indexSettings(1, 0)).get());
        ResourceAlreadyExistsException exception = expectThrows(
            ResourceAlreadyExistsException.class,
            () -> rollup(sourceIndex, rollupIndex, config)
        );
        assertThat(exception.getMessage(), containsString(rollupIndex));
    }
    public void testRollupEmptyIndex() throws IOException {
        DownsampleConfig config = new DownsampleConfig(randomInterval());
        
        prepareSourceIndex(sourceIndex);
        rollup(sourceIndex, rollupIndex, config);
        assertRollupIndex(sourceIndex, rollupIndex, config);
    }
    public void testRollupIndexWithNoMetrics() throws IOException {
        
        String sourceIndex = "no-metrics-idx-" + randomAlphaOfLength(5).toLowerCase(Locale.ROOT);
        indicesAdmin().prepareCreate(sourceIndex)
            .setSettings(
                indexSettings(numOfShards, numOfReplicas).put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES)
                    .putList(IndexMetadata.INDEX_ROUTING_PATH.getKey(), List.of(FIELD_DIMENSION_1))
                    .put(IndexSettings.TIME_SERIES_START_TIME.getKey(), Instant.ofEpochMilli(startTime).toString())
                    .put(IndexSettings.TIME_SERIES_END_TIME.getKey(), "2106-01-08T23:40:53.384Z")