[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
- [ ] Memory benchmark with ```njobs != 1```
oh, the shame.


On 15 July 2014 19:24, Vlad Niculae <notifications@github.com> wrote:

>  In sklearn/multiclass.py:
>
> >      Y = lb.fit_transform(y)
> > -
> > -    estimators = Parallel(n_jobs=n_jobs)(
> > -        delayed(_fit_binary)(estimator, X, Y[:, i], classes=["not %s" % i, i])
> > -        for i in range(Y.shape[1]))
> > +    Y = Y.tocsc()
> > +    columns = (Y.getcol(i).toarray().ravel() for i in range(Y.shape[1]))
>
> beat you to it :P
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/scikit-learn/scikit-learn/pull/3276/files#r14924254>.
>