[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!
Sorry for being dense, but can you give me an intuitive explanation of why this scaling is being done? And why it is being added to the vote count, if you just want the vote count to be preserved?