A composable index template with no `template` defined in the body is mistakingly always assumed to not be a time series template. Even if it refers to a component template that has the `index.mode` setting set to `time_series` and the component template defines mappings with dimension fields or routing paths.

Incorrectly this causes to create a data stream with a tsdb index *without* time series start and end time settings set. The fact that this can happen is another bug and is being tracked #98833.

What should happen in this case is that a tsdb data stream is created with a valid tsdb backing index (with correctly generated time series start and end time settings).

This bug was found as part investigating #98792 and is the cause of that bug.
modules/data-streams/src/javaRestTest/java/org/elasticsearch/datastreams/TsdbDataStreamRestIT.java
assertThat(ObjectPath.evaluate(dataStreams, "data_streams.0.name"), equalTo("k8s"));
                assertThat(ObjectPath.evaluate(dataStreams, "data_streams.0.indices"), hasSize(2));
                assertThat(ObjectPath.evaluate(dataStreams, "data_streams.0.time_series"), nullValue());
            }
            {
                
                var oldIndex = (String) rolloverResponseBody.get("old_index");
                assertThat(oldIndex, backingIndexEqualTo("k8s", 1));
                var indices = getIndex(oldIndex);
                var escapedBackingIndex = oldIndex.replace(".", "\\.");
                assertThat(ObjectPath.evaluate(indices, escapedBackingIndex + ".data_stream"), equalTo("k8s"));
                assertThat(ObjectPath.evaluate(indices, escapedBackingIndex + ".settings.index.mode"), equalTo("time_series"));
                assertThat(ObjectPath.evaluate(indices, escapedBackingIndex + ".settings.index.time_series.start_time"), notNullValue());
                assertThat(ObjectPath.evaluate(indices, escapedBackingIndex + ".settings.index.time_series.end_time"), notNullValue());
            }
            {
                
                var newIndex = (String) rolloverResponseBody.get("new_index");
                assertThat(newIndex, backingIndexEqualTo("k8s", 2));
                var indices = getIndex(newIndex);
                var escapedBackingIndex = newIndex.replace(".", "\\.");
                assertThat(ObjectPath.evaluate(indices, escapedBackingIndex + ".data_stream"), equalTo("k8s"));
                assertThat(ObjectPath.evaluate(indices, escapedBackingIndex + ".settings.index.mode"), nullValue());
                assertThat(ObjectPath.evaluate(indices, escapedBackingIndex + ".settings.index.time_series.start_time"), nullValue());
                assertThat(ObjectPath.evaluate(indices, escapedBackingIndex + ".settings.index.time_series.end_time"), nullValue());
            }
        }
        {