[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.
Is it good to check this in a step wise manner, or is it not needed?

    if output_weights:
        if instance(output_weights, str) and output_weights not in ['uniform', 'variance']:
            raise ValueError
        else:
            blah blah

Basically I am afraid, if output_weights is a string and is passes to `check_array`, it might be give a wrong answer.