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
Looking at the BFGS one, I'm certain you could define a base a class like:
```
class _ScipyOptimizerWrapperObject(object):  # this name is kinda lame, maybe something more descriptive
  def __init__(self, domain, optimizable, optimization_parameters, scipy_optimizer_function=None):
    # do the stuff you currently do--set domain, check for num_repeats, etc

  def _scipy_decorator ...

  def optimize(self, **kwargs): ...

  @abstractmethod
  def get_scipy_optimizer_kwargs(self):
    pass
```
then
```
class BFGSWhatever(ScipyWrapperWhatever):
  def __init__(...):
    super(BFGSWhatever, self).__init__(..., scipy_optimizer_function=scipy.whatever.whatever)

  def get_scipy_function_kwargs(self):
    domain_bounding_box = ...
    args = {'func': self._scipy_decorator(...), etc}
```