AB testing updated to be stateless and calculated at request time

Implementing AB testing use a stateless, at-request-time calculation of the groups. The only thing lost here is the ability to divide into exact groups by percentage, but I don't believe we need that for UI A/B testing. This now completely avoids plan or user-based calculations of all the schedules for a study.
SecureRandom, not Random.