Add base support for cohorted group configurations

TNL-649

Introduced a new scheme field to user partitions that controls how a user gets assigned
to one of the partitions groups. The default scheme is random, but the next step will be
to introduce a new scheme that will assign the user based upon the cohort they belong to.
This was my somewhat ugly workaround so that I can drop in a different mock service in the tests. This was easier in the original code where the service could be replaced, but that isn't possible now that I'm importing the code directly.

Is there a better way to achieve this?