Check variables: move regexp to class, improve checks

Two changes besides moving regexps into the class.

Modified the 'printf' regexp to find variables like %S, %1$S, but also $0.S and %1$0.S. Last two are zero-length strings, used as a hack to fool compare-locales and don't report missing variables.

For these variables, ignore case and:
* Check that string doesn't have a mix of ordered/unordered variables.
* Otherwise, if the total number of variables is the same, consider the string valid.