Pluggable Algorithms

For us, we'd like to use the default weighted sample algorithm for some experiments, but a bandit approach for others. 

This pull request abstracts the algorithm used to choose alternatives in an experiment into a pluggable module. 

There is a global configuration option for which algorithm to use, but it can be overridden on a per-experiment basis.