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.
Ah, gotcha. No unverified/derived locales allowed. Makes sense.