[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
Well, `Y.T` is an O(nnz + shape[1]) operation, because it constructs a `csr_matrix`, which then revalidates the data. There's also overhead in `Y.getcol(500)`'s twice constructing custom Python classes (`csr_matrix`, then `csc_matrix`). Object construction isn't especially fast. But even `csr_matrix.getrow`'s implementation should be somewhat slower than a simple slice, although asymptotically of the same complexity.

It looks to me like the transposes are unnecessary, though, if `_get_submatrix` is moved to `_cs_matrix`. I might submit a PR to scipy to remove them.