[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```
No, what I meant is more subtle.

X is 100x20. When you take X[80:] you are left with 100 - 80 rows,
therefore 20 rows. Again, it shouldn't matter, but also there's no reason
for these particular values, that happen to result in a square matrix,
either.


On Tue, Jul 15, 2014 at 5:50 PM, hamsal <notifications@github.com> wrote:

> In sklearn/tests/test_multiclass.py:
>
> > +    for sparse in [sp.csr_matrix, sp.csc_matrix, sp.coo_matrix, sp.dok_matrix,
> > +                   sp.lil_matrix]:
> > +        base_clf = MultinomialNB(alpha=1)
> > +
> > +        make_mlb = datasets.make_multilabel_classification
> > +        X, Y = make_mlb(n_samples=100,
> > +                        n_features=20,
> > +                        n_classes=5,
> > +                        n_labels=3,
> > +                        length=50,
> > +                        allow_unlabeled=True,
> > +                        return_indicator=True,
> > +                        random_state=0)
> > +
> > +        X_train, Y_train = X[:80], Y[:80]
> > +        X_test, Y_test = X[80:], Y[80:]
>
> By this small sample it looks like X_test will not become square
>
> >>> np.eye(10)[4:]
> array([[ 0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.],
>        [ 0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.],
>        [ 0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.],
>        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.],
>        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.],
>        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.]])
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/scikit-learn/scikit-learn/pull/3276/files#r14943827>.
>