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/. 
from scipy.special import factorial