[MRG+2] Require explicit average arg for multiclass/label P/R/F metrics and scorers

In order to avoid problems like #2094, and to avoid people unwittingly reporting weighted average, this goes towards making 'average' a required parameter for multiclass/multilabel precision, recall, f-score. Closely related to #2676.

After a deprecation cycle, we can turn the warning into an error, or make macro/micro default.

This PR also shards the builtin scorers to make the averaging explicit. This avoids users getting binary behaviour when they shouldn't (cf. #2094 where `scoring` isn't used). I think this is extra important because "weighted" F1 isn't especially common in the literature, and having people report it without realising that's what it is is unhelpful to the applied ML community. This helps, IMO, towards a more explicit and robust API for binary classification metrics (cf. #2610).

It also entails a deprecation procedure for scorers, and more API there: public `get_scorer` and `list_scorers`
weighted f1 is not very commonly used in the field. We don't want to encourage it.

But as I presume this is a multiclass problem (with no majority class), it probably makes more sense to use macro, or else just to report accuracy which should be equivalent to multiclass micro f1.

So good catch!