[WIP] ENH: Parallelize neighbors search through multiprocessing

I used the most simple approach with `'multiprocessing'` joblib backend. A simple benchmark could be seen [here](http://nbviewer.ipython.org/gist/nmayorov/7531d9b59608ae2d76dc).

This is the issue #3536.
Oh, I see. That makes sense, as all the memory copying is going to lead to a fair amount of overhead.  I think a better way to approach it would be to modify the functions to accept the output array as a typed memoryview argument. That gets around both the extra malloc/free calls and the eventual copying.