new global optimization algorithm, basinhopping

Hi, I wrote an implementation of the basinhopping global optimization algorithm and I think it would be a useful addition to scipy.optimize.  It's a powerful algorithm, but all the hard work would be done by the minimizers that already exist in scipy.optimize, so the additional code needed is really not very much.

The following is from the documentation notes:

Basin hopping is a random algorithm which attempts to find the global minimum of a smooth scalar function of one or more variables.  The algorithm was originally described by David Wales http://www-wales.ch.cam.ac.uk/ .  The algorithm is iterative with each iteration composed of the following steps

    1) random displacement of the coordinates

    2) local minimization

    3) accept or reject the new coordinates based on the minimized function
    value.

This global minimization method has been shown to be extremely efficient on a wide variety of problems in physics and chemistry.  It is especially efficient when the function has many minima separated by large barriers.  See the cambridge cluster database http://www-wales.ch.cam.ac.uk/CCD.html for database of molecular systems that have been optimized primarily using basin hopping.  This database includes minimization problems exceeding 300 degrees of freedom.

Thanks,
Jake

p.s. this is my first submission

p.p.s. I'm not totally sure I did all the documentation completely correctly.