ENH: Benchmarking global optimizers

This PR adds over 100 classes that can be used to benchmark global optimizers.  Global optimizers are methods for finding minima in functions that may have multiple local minima but few global minima, may not be differentiable, etc.  Global optimizers need to be used because normal minimizers typically can't cope with starting points that are far away from the global minimum.
These global benchmarking functions are based on a suite written by Andrea Gavana, https://code.google.com/p/ampgo/. 
All the problems where the dimensionality can be changed have hypercube boundaries.  There are problems where the boundaries specify a hyper-rectangle, but they don't change in dimensionality.
If there are problems that need to be changeable in dimension and need to be hyper-rectangular, then they should override the bounds method of the superclass.