[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
Is it worth to have a dedicated helper? It's faster, but is it useful?

```
In [2]: from sklearn.random_projection import sparse_random_matrix

In [9]: Y = sparse_random_matrix(10000, 1000, density=0.1, random_state=0).tocsc()

In [10]: timeit Y.getcol(500)
10000 loops, best of 3: 145 us per loop

In [11]: timeit Y.getcol(500).toarray()
1000 loops, best of 3: 252 us per loop

In [12]: timeit _get_col(Y, 450)
10000 loops, best of 3: 22.3 us per loop

In [13]: timeit _get_col(Y, 500)
10000 loops, best of 3: 21.2 us per loop
```

@jnothman  Any idea why there is such difference? Looking at the [implementation](https://github.com/scipy/scipy/blob/v0.14.0/scipy/sparse/csc.py#L190) is not helpful.