We allow characters in the ID of an ILM policy that will result in an invalid snapshot name.

For example, an ILM policy with the name `mypolicy-*` can be created, however, the generation of the snapshot name in this line:

https://github.com/elastic/elasticsearch/blob/befb6faafc9fca327fd3cea2d0ab328a521c4e65/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/GenerateSnapshotNameStep.java#L81

Results in the `mypolicy-*` being part of the snapshot name, which the snapshot service then disallows. We should strip these invalid characters from the snapshot name.
server/src/main/java/org/elasticsearch/common/Strings.java
*                   (each of those characters is individually considered as delimiter).
     * @return an array of the tokens
     * @see java.util.StringTokenizer
     * @see java.lang.String#trim()
     * @see #delimitedListToStringArray
     */
    public static String[] tokenizeToStringArray(final String s, final String delimiters) {
        if (s == null) {
            return EMPTY_ARRAY;
        }
        return toStringArray(tokenizeToCollection(s, delimiters, ArrayList::new));
    }
    /**
     * Tokenizes the specified string to a collection using the specified delimiters as the token delimiters. This method trims whitespace
     * from tokens and ignores empty tokens.
     *
     * @param s          the string to tokenize.
     * @param delimiters the token delimiters
     * @param supplier   a collection supplier
     * @param <T>        the type of the collection
     * @return the tokens
     * @see java.util.StringTokenizer
     */
    private static <T extends Collection<String>> T tokenizeToCollection(
        final String s,
        final String delimiters,
        final Supplier<T> supplier
    ) {
        if (s == null) {
            return null;