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.
Init is only called from the constructor. Collapsing it down would allow the variables to be final and also little 'boolean' for case/accent.