[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.
In general, I'm strongly opposed to using raw ``malloc`` calls. In my experience, they are a maintenance nightmare. Much of the design of the current binary tree code was built around relying on ``numpy`` for all memory allocation. Unless there's a really, really, really compelling reason to make this change, I'm against it.