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.
For some reason I thought strength couldn't be specified as a keyword. Makes perfect sense if it can. We'll just need to update the docs, of course.