ENH: scipy.optimize - adding differential_evolution

Differential evolution (DE) is an algorithm that is widely used for minimizing functions that have multiple global minima. As such it is widely used in curvefitting applications.  This pull request adds the differential_evolution function to scipy.optimize, and will complement basinhopping.

[1] Storn, R and Price, K, Differential Evolution - a Simple and
           Efficient Heuristic for Global Optimization over Continuous Spaces,
           Journal of Global Optimization, 1997, 11, 341 - 359.
[2] http://en.wikipedia.org/wiki/Differential_evolution