[WIP] Added kernel weighting functions for neighbors classes

This patch enables the use of kernel functions for neighbors weighting.

It adds the following keywords for ``weights`` argument: ``tophat``, ``gaussian``, ``epanechnikov``, ``exponential``, ``linear``, ``cosine``, i.e. all kernels presented in ``KernelDensity`` class.

For ``KNeighborsClassifier`` and ``KNeighborsRegressor`` the kernel bandwidth is equal to the distance to the k+1 nearest neighbor (i. e. it depends on a query point).

For ``RadiusNeighborsClassifier`` and `` RadiusNeighborsRegressor`` the kernel bandwidth is equal to the radius parameter of the classifier (i. e. it is constant).

Please, take a look.
running this example it seems that epanechnikov is the only kernel in this list that does not force the line to go through the training point.

it terms of user understanding this point should be explained in the doc.

![figure_1](https://cloud.githubusercontent.com/assets/161052/4688977/70eff7e0-569e-11e4-89bb-0bf241c359fe.png)