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
return first;
        }
        String[] concat = new String[first.length + second.length];
        System.arraycopy(first, 0, concat, 0, first.length);
        System.arraycopy(second, 0, concat, first.length, second.length);
        return concat;
    }
    /**
     * Tokenize the specified string by commas to a set, trimming whitespace and ignoring empty tokens.
     *
     * @param s the string to tokenize
     * @return the set of tokens
     */
    public static Set<String> tokenizeByCommaToSet(final String s) {
        if (s == null) return Collections.emptySet();
        return tokenizeToCollection(s, ",", HashSet::new);
    }
    /**
     * Split the specified string by commas to an array.
     *
     * @param s the string to split
     * @return the array of split values
     * @see String#split(String)
     */
    public static String[] splitStringByCommaToArray(final String s) {
        if (s == null || s.isEmpty()) return Strings.EMPTY_ARRAY;
        else return s.split(",");
    }
    /**
     * Split a String at the first occurrence of the delimiter.