Add ambiguous collation exception, fix various other collation problems

Specifically, this PR
  1) adds an exception for ambiguous collations (e.g., en_ci),
  2) actually validates locales, instead of just appearing to validate them,
  3) moves the logic for parsing collation schemes and creating RuleBasedCollators out of AkCollatorFactory into its own class,
  4) enables general ICU keywords+values (and throws an error when they aren't valid), and
  5) creates a canonicalized version of the collation scheme.
I was trying to avoid the case where keywords and shortcuts conflict. E.g., you could get something like this: en_us_strength=1_cs_co (the strength=1 should set things to case/accent insensitive). I could just prioritize one over the other, or try to be more sophisticated in detecting a conflict here if you think that would be a better solution.