Hook up BFGS to rest

********* PEOPLE *************
Primary reviewer: @sc932 

Reviewers: @suntzu86 

********* DESCRIPTION **************
Branch Name: denizokt_285_qei_rest
Ticket(s)/Issue(s): Closes #285 

********* TESTING DONE *************
this comment isn't about this line. it's about the try-except statement like 15 lines down (around line 140).

we have an additional problem here. when expected_improvement_evaluator is PythonExpectedImprovement, the try statement will execute the analytic_qEI code. When the variance matrix is singular, analytic_qEI can fail silently. (The monte carlo versions will not fail silently b/c they have to compute a cholesky factorization and that fails.) I believe fail silently here means return EI = 0.0 even when that is not true (internally, NaNs occur).

There is a ticket for dealing with this: https://github.com/Yelp/MOE/issues/314
As a stopgap, we may want to check nan-ness at the end of analytic_qEI and throw an exception if NaNs arise (then the except block will fire and compute a numerically safe result). Although I'm not sure that NaN is the only way that qEI can fail.

We can talk more in person but something needs to be done here. This is important for both line 140 and in general (e.g., if NaNs arise during BFGS, we will return 0 which misleads the optimizer severely)