Implements Multiclass hinge loss

Implements multiclass hinge loss. Fixes #3451 
The issue persists even with this. Suppose y_true is [0, 2, 3]. If we do this

le.fit(labels)
y_bin = le.fit_transform(y_true)

then y_bin is [0, 1, 2]. Thus, calling         

mask[np.arange(y_true.shape[0]), y_bin] = False

would give mask as

array([[False,  True,  True,  True],
       [ True, False,  True,  True],
       [ True,  True, False,  True]], dtype=bool)

I think it should be

array([[False,  True,  True,  True],
       [ True, True,  False,  True],
       [ True,  True, True,  False]], dtype=bool)

for the correct labels to match. What do you think?