BUG: SVC fit() w/ class w/ all 0 sample weights.

Versions of LibSVM and LibLinear that support sample/instance weights
will remove all samples with 0 weight before training. If all samples of
some classes have 0 weight, the internal LibXXX model will think it has
that many less classes than the number provided to sklearn.

This caused issues with, for example, predict_proba returning
probabilities with the wrong shape in the last dimension.
TST: Improve SVC tests for sample_weight.

Tests now cover cases involving the wrong sample_weight shape and
classes whose samples have all 0 weight.