[MRG] Add decision_function for OneVsOneClassifier.

Adding `decision_function` support for the `OneVsOneClassifier`.

This is based off of #1548 and addresses #1523.

- [x] Implement the `decision_function` for `OneVsOneClassifier` 

decision_function returns `votes + scores * (0.4 / max(|scores.max(axis=None)|, |scores.min(axis=None)|))`

As a corner case, when both max and min are same, it simply returns `votes`.

- [x] Add tests for ovo decision function
* Tests `decision_function(X).argmax(axis=1) == predict(X)`
* Tests `decision_function(X).shape == (n_samples, n_classes)`
* Tests `np.round(decision_function(X)) == separately_computed_votes`
* Tests `computed_scores = (decision_function(X) - np.round(decision_function(X)) ) * upscale_factor_derived_from_computed_scores `

- [x] Incorporate the `decision_function` output in `test_ovo_ties`
`ovo_ties` test requires `votes` to assert tie and `scores` to assert if the prediction breaks ties using aggregated decision scores. Both `votes` and `scores` ( individual ) were separately computed till now. These are modified to use `decision_function`
* `votes = round(decision_values)`
* `scaled_aggregated_scores = decision_values - votes`

@arjoly, @amueller, @mblondel  Pl. review when you find time!
From the code of `fit`, it seems to me that it would break if `y` is not encoded and hence this. But I don't know if it should be addressed in this PR or not.