added COBYLA (no REST interface yet)

********* PEOPLE *************
Primary reviewer: @sc932 

Reviewers: @suntzu86 

********* DESCRIPTION **************
Branch Name: denizokt_370_constraints
Ticket(s)/Issue(s): Closes #370 

********* TESTING DONE *************
make test
make style-test
how similar is this & the optimize function to the BFGS stuff? My sense is that they're nearly identical outside of the actual call to scipy. we should create like a scipy wrapper mixin class that captures all the common pieces. Then each implementation could specify like which optimizer to call along with how to generate the arguments. then you can do:
```
unshaped_point = whatever(**self.get_optimizer_kwargs())
```
and only need to implement ```get_optimizer_kwargs``` per subclass. (even that could be more automated by automatically converting parameter structs to dicts but i'm less concerned about that)