[MRG] 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?
btw, this is simply, `dict(zip(np.arange(len(self.classes_)), self.classes_))` assuming that the call here is not costly.