### Description

Watcher will perform some basic validation prior to starting. One part of this validation is ensuring that if there is an alias to the .watcher-history-* index that it only contains a single index. In 8.0+ this validation can incorrectly cause Watcher to fail to start. In 8.0+ .watcher-history-* is a data stream (not an alias) and the data stream is expected to have multiple backing indices (unlike the elder alias support). The implementation/api is shared between resolving aliases and resolving data streams so the validation will incorrectly flag multiple backing indices for data streams as problematic and cause Watcher to fail to start. 

This issue will only happen when .watcher-history-16 data stream has multiple backing indices AND watcher needs to restart for any reason. Watcher can need to be restarted on cluster start, explicit start/stop, and any change to the allocation assignment for the .watches shards. 

The error message is (only seen for a logger at debug level ` "logger.org.elasticsearch.xpack.watcher": "debug"`) :
```
[2022-03-30T13:13:48,011][DEBUG][o.e.x.w.WatcherService   ] [runTask-0] error validating to start watcher
java.lang.IllegalStateException: Alias [.watcher-history-16] points to more than one index
        at org.elasticsearch.xpack.watcher.watch.WatchStoreUtils.getConcreteIndex(WatchStoreUtils.java:32) ~[x-pack-watcher-8.2.0-SNAPSHOT.jar:8.2.0-SNAPSHOT]
        at org.elasticsearch.xpack.watcher.history.HistoryStore.validate(HistoryStore.java:79) ~[x-pack-watcher-8.2.0-SNAPSHOT.jar:8.2.0-SNAPSHOT]
        at org.elasticsearch.xpack.watcher.WatcherService.validate(WatcherService.java:157) [x-pack-watcher-8.2.0-SNAPSHOT.jar:8.2.0-SNAPSHOT]
        at org.elasticsearch.xpack.watcher.WatcherLifeCycleService.clusterChanged(WatcherLifeCycleService.java:162) [x-pack-watcher-8.2.0-SNAPSHOT.jar:8.2.0-SNAPSHOT]
        at org.elasticsearch.cluster.service.ClusterApplierService.callClusterStateListener(ClusterApplierService.java:564) [elasticsearch-8.2.0-SNAPSHOT.jar:8.2.0-SNAPSHOT]
        at org.elasticsearch.cluster.service.ClusterApplierService.callClusterStateListeners(ClusterApplierService.java:550) [elasticsearch-8.2.0-SNAPSHOT.jar:8.2.0-SNAPSHOT]
        at org.elasticsearch.cluster.service.ClusterApplierService.applyChanges(ClusterApplierService.java:510) [elasticsearch-8.2.0-SNAPSHOT.jar:8.2.0-SNAPSHOT]
        at org.elasticsearch.cluster.service.ClusterApplierService.runTask(ClusterApplierService.java:428) [elasticsearch-8.2.0-SNAPSHOT.jar:8.2.0-SNAPSHOT]
        at org.elasticsearch.cluster.service.ClusterApplierService$UpdateTask.run(ClusterApplierService.java:154) [elasticsearch-8.2.0-SNAPSHOT.jar:8.2.0-SNAPSHOT]
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:714) [elasticsearch-8.2.0-SNAPSHOT.jar:8.2.0-SNAPSHOT]
        at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:260) [elasticsearch-8.2.0-SNAPSHOT.jar:8.2.0-SNAPSHOT]
``` 
You can determine if this is the case by looking at `GET _watcher/stats` and `"watcher_state": "stopped"` and ` "manually_stopped": false` which means that the system via validation, not a user has stopped Watcher.  (you can also tell by increasing the log level and reviewing the logs)

You can reproduce with the following steps:

```
PUT _cluster/settings
{
    "persistent": {
        "logger.org.elasticsearch.xpack.watcher": "debug"
    }
}


PUT _watcher/watch/test
{
    "trigger": {
        "schedule": {
            "interval": "1s"
        }
    },
    "input": {
        "simple": {
            "key": "value"
        }
    },
    "actions": {
        "my_logger": {
            "logging": {
                "text": "Watch payload [{{ctx.payload}}]",
                "level": "debug"
            }
        }
    }
}

GET _data_stream/.watcher-history-16?expand_wildcards=all

POST _watcher/_stop

POST _watcher/_start

GET _watcher/stats

POST .watcher-history-16/_rollover

GET _data_stream/.watcher-history-16?expand_wildcards=all

POST _watcher/_stop

POST _watcher/_start

GET _watcher/stats
```

You can work around this issue by ensuring there are never more than 1 backing index in the .watcher-history-16 data stream. Use the ILM policy to ensure at  most 1 index for the watcher-history.

```
# increase max age to 7 days and remove min age from the delete phase of the default policy
PUT _ilm/policy/watch-history-ilm-policy-16
{
    "policy": {
        "phases": {
            "hot": {
                "min_age": "0ms",
                "actions": {
                    "rollover": {
                        "max_primary_shard_size": "50gb",
                        "max_age": "7d"
                    }
                }
            },
            "delete": {
                "actions": {
                    "delete": {
                        "delete_searchable_snapshot": true
                    }
                }
            }
        },
        "_meta": {
            "managed": true,
            "description": "default policy for the watcher history indices"
        }
    }
}

#wait up to 10 minutes (depending on ILM poll interval) to see a single backing index
GET _data_stream/.watcher-history-16?expand_wildcards=all

POST _watcher/_start

GET _watcher/stats
```
x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/execution/TriggeredWatchStoreTests.java
)
                ).build()
            );
            indexRoutingTableBuilder.addReplica();
        }
        routingTableBuilder.add(indexRoutingTableBuilder.build());
        csBuilder.metadata(metadataBuilder);
        csBuilder.routingTable(routingTableBuilder.build());
        ClusterState cs = csBuilder.build();
        assertThat(TriggeredWatchStore.validate(cs), is(false));
    }
    public void testFindTriggeredWatchesGoodCase() {
        ClusterState.Builder csBuilder = new ClusterState.Builder(new ClusterName("_name"));
        RoutingTable.Builder routingTableBuilder = RoutingTable.builder();
        Metadata.Builder metadataBuilder = Metadata.builder();
        metadataBuilder.put(IndexMetadata.builder(TriggeredWatchStoreField.INDEX_NAME).settings(indexSettings));
        final Index index = metadataBuilder.get(TriggeredWatchStoreField.INDEX_NAME).getIndex();
        IndexRoutingTable.Builder indexRoutingTableBuilder = IndexRoutingTable.builder(index);
        ShardId shardId = new ShardId(index, 0);
        indexRoutingTableBuilder.addIndexShard(
            new IndexShardRoutingTable.Builder(shardId).addShard(
                TestShardRouting.newShardRouting(shardId, "_node_id", null, true, ShardRoutingState.STARTED)
            ).build()
        );
        indexRoutingTableBuilder.addReplica();
        routingTableBuilder.add(indexRoutingTableBuilder.build());
        csBuilder.metadata(metadataBuilder);
        csBuilder.routingTable(routingTableBuilder.build());
        ClusterState cs = csBuilder.build();
        doAnswer(invocation -> {