[MRG] Sparse One vs. Rest

This is a PR for the other parts in PR #2458 concerning sparse output support for the ovr classier. This branch was made off of the sprs-lbl-bin branch from PR #3203 and will be rebased to remove all the sparse label binarizer additions from the diff once the pull request is merged.

Benchmark Experiments using PR #2828 for data generation:
- [x] ```fit_ovr```: ```sparse_output=True``` VS. ```sparse_output=sp.issparse(y)```
- [x] ```fit_ovr``` With input as CSR matrix: Cast to CSC before column extraction VS. Leave as CSR
- [x] Memory profiling for sparse vs. dense target data
- [x] Test the changes to label.py
- [x] Test probability and desicion functions after fitting on sparse target data
- [x] Memory benchmark with ```njobs != 1```
I'm not saying there is need for it. I'm asking what happens if a user
tries it.
On Jul 15, 2014 9:58 PM, "hamsal" <notifications@github.com> wrote:

> In sklearn/multiclass.py:
>
> >      e = estimators[0]
> >      thresh = 0 if hasattr(e, "decision_function") and is_classifier(e) else .5
> > -    return label_binarizer.inverse_transform(Y.T, threshold=thresh)
> > +
> > +    if label_binarizer.y_type_ == "multiclass":
>
> I don't see the need for binary data with One vs. Rest since it is not
> multiclass and would be the same thing as fitting a regular estimator. I am
> also not sure "multiclass-multioutput" would work since it does not fit
> with the scheme of One vs. Rest and there is no way to binarize it.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/scikit-learn/scikit-learn/pull/3276/files#r14959192>.
>