add benchmark test for optimizers
add several more test optimization functions

update the benchmark framework to allow multiple starting points
add another benchmark function (Booth)
Add Beale's function
change wording
use numpy test benchmarking framework

Mostly I had to conform to the function and class naming scheme and call
numpy.testing.Tester().bench()
add grouping scheme for functions of similar type

I put them in a class BenchSmoothUnbounded()
print the number of dimensions
optimize/benchmarks: Python 3 fixes
Merge pull request #3088 from js850/benchmarks

ENH: optimize: Add a benchmark framework for the optimizers

This adds a framework for benchmarking the optimizers, along with 8 or
so benchmarks on different functions.