[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.
Noob Question: Is the function `_average_and_variance` even necessary? Why not just

    diff = y_true - y_pred 
    diff_ave = np.average(diff, weights=sample_weight, axis=0)
    numerator = np.sum(sample_weight[:, np.newaxis] * (diff - diff_ave)**2, axis=0)
    y_ave = np.average(y_true, sample_weight, axis=0)
    denominator = np.sum(sample_weight[:, np.newaxis] * (y_true - y_ave)**2, axis=0)