[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.
`for x in X` is far too inefficient, especially not with a nested `for e in estimators`, and within that a call to `e.predict`.
We could just use the former method which constructs a necessarily dense probability matrix. If not, we can only tolerate a `for e in estimators` loop. Something along the lines of:
```python
maxima = np.empty(X.shape[0], dtype=double)
maxima.fill(-np.inf)
argmaxima = np.zeros(X.shape[0], dtype=int)
for i, e in enumerate(estimators):
    pred = _predict(e, X)
    np.maximum(maxima, pred, out=maxima)
    argmaxima[maxima == pred] = i
```
This will be somewhat slower than the approach we are replacing, but won't consume as much space.