Allow clients to choose an alternative

Useful for situations where you may not know if a test will be encountered until it's too late to rely on asynchronously choosing an alternative.

For example, when testing the behavior of a button, if `participate` is called when the button is setup, users that never click the button will dilute the results, thus requiring more participations to reach significance.