Ensure that classification metrics support string label

Since most estimators accept string as input, I make sure that most metrics will do.

This pr add support for string label in binary and multiclass classification metrics.
This doesn't include  metrics with a `y_score`, e.g. `auc_score` and `precision_recall_curve`

This should fix #2168