[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?
1. You need not store msg.
2. I don't think there is a need for `repr` you can just remove it.
3. `y_i` here should be `y_i[~np.in1d(np.unique(y_i), classes)]` , you can store `np.in1d(np.unique(y_i), classes)` from above.
4. "The target labels %s in y do not exist in the initial classes %s" should be enough, I think.