[WIP] 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:
- [ ] ```fit_ovr```: ```sparse_output=True``` VS. ```sparse_output=sp.issparse(y)```
- [ ] ```fit_ovr``` With input as CSR matrix: Cast to CSC before column extraction VS. Leave as CSR
- [ ] Memory profiling for sparse vs. dense mlb
I would rather it if the call to `Parallel` was not duplicated for the sparse and dense cases. This can be achieved by providing a function that returns an iterator over columns (i.e. a generator) rather than a function that just returns each column.

That is, it might look like:
```python
if sp.issparse(Y):
    Y = Y.tocsc()
    columns = _generate_columns(Y)
else:
    columns = Y.T
estimators = Parallel(n_jobs=n_jobs)(delayed(_fit_binary)(....)
                                     for i, column in enumerate(columns))
```