[MRG+1] Multi-output scoring, or 2493 cont'd for real

This time taking into account the refactoring of metrics.py into several files.

This replaces https://github.com/scikit-learn/scikit-learn/pull/3456, which I closed.
It is true that this can become slow when `(n_test_samples, n_outputs)` gets very large. I have around `(1000, 100000)` and it is still OK. Making this better will surely imply either getting rid of `np.average` (in the multioutput case), because it imposes this broadcast to be done explicitly or to writing an upstream suggestion to handle broadcasting implicitly, which will probably not be accepted on grounds of avoiding magical behaviour. If this is a serious problem I can definitely fix it right away.