L-BFGS-B Implementation

Very rough at the moment. Uploaded for potential comments/suggestions.

********* PEOPLE *************
Primary reviewer: @sc932 

Reviewers: @suntzu86 

********* DESCRIPTION **************
Branch Name: denizokt_228_implement_LBFGSB
Ticket(s)/Issue(s): Closes #228 

********* TESTING DONE *************
make test
@bulutcocuk not sure what tests you're referring to. the multistart optimizer tests read the return value b/c the multistart optimizer wrapper functions have a doc'd return value. The regular ```OptimizerInterface.optimize()``` does not have a return value.

@sc932 #59 deals with improving the communication on output. like we'd like to be able to indicate convergence, statuses, etc. For now, there is no contractual return value.

For now, ```OptimizableInterface.optimize()``` does not have a return value. If you want BFGS.optimize() to have one (why?), then it's ad-hoc. And if it's going to be ad-hoc, then there is no need to return ```None```.