[MRG+1] GaussianNB.partial_fit - Raise ValueError when there is a mismatch between target and classes argument

In `GaussianNB.partial_fit`, when there is a mismatch between the target labels (or classes) `y` and the `classes` argument, a `KeyError` was raised while attempting to access the `class2idx` ( refactored to `class_to_index` for readability ) with the mismatching key.

Sample code that reproduces this `KeyError`
`gnb.partial_fit(X = [[1,2], [-2,2]], y = [1,2], classes = [0,1])`

* Now a `ValueError` with a message explaining that is raised.
`ValueError: The target label in y does not exist in the initial classes argument, classes=[0, 1]; The conflicting target label is 2`

* Added NRT to test the same.

@GaelVaroquaux Could you take a look at this?
Putting this on the estimator breaks all pickled `GaussianNB` instances. Since `self.classes_` is supposed to be sorted, an `np.searchsorted` should be used instead of `class2idx`.