Added Bandit UCB1 implementation

********* PEOPLE *************
Primary reviewer: @sc932 

Reviewers: @suntzu86 

********* DESCRIPTION **************
Branch Name: norases_354_ucb1_bandit
Ticket(s)/Issue(s): #354 

********* TESTING DONE *************
make test
make style-test
This seems dangerous? choose_arm() calls allocate_arms(). If allocate_arms() ever does something involving RNG, then arm_allocations and winner may not line up.

It might be better to have choose_arm accept the output of allocate_arms as an argument? (then choose_arm) can be static too) Or are there *no* bandit algorithms that would do this?