PY3 xrange, np.divide, string.uppsercase, None comparison

Fixes #2108.
MAINT dedup Clay Woolam's contribs (>100 commits!)
FIX/ENH mean shift clustering

* min_bin_freq argument (fixes #2060, but needs a test)
* authors in comment, not docstring
* don't store fitted attributes (trailing _) before fit
DOC typo
ENH micro-optimize RFECV

Skip repeated indexing into X and y.
FIX mbkmeans benchmark bug (k instead of n_clusters)
FIX off-by-one error in neighbors benchmark
ENH lots of benchmarks fixes

* add a title to all benchmark figures/windows
* "bench" is non-standard slang for benchmarking
* remove calls to pyplot.clf because the previous call
  to pyplot.figure sets the current figure
* standardize on "Time (s)" as time axis label
* move some benchmark plot legends to the upper left corner of the plot:
  most benchmarks expand from (0,0) up and to the right
* simplified plot titles and moved constant info from legend into title
* fixed typos
* made some labels more viewer-friendly

Fixes #2023.
COSMIT refactor LibSVM wrapper for safety and readability

* don't pass fit-time parameters to prediction functions
* do memory deallocation in a finally clause
* trim docstrings and comments

TODO:
* fit needs the finally clause as well
* sparse LibSVM should get the same treatment

(test_svc_clone_with_callable_kernel might fail sometimes. That appears
to be unrelated.)