REFACTOR roc_curve and precision_recall_curve

After getting caught on some of the quirks of `roc_curve`*, I decided it and its cousin, `precision_recall_curve` could be neater, especially seeing as they share the need to calculate true positives and false negatives at each threshold.

This is my attempt at cleaning things up.

(* I'm pretty sure that `and` should be `or` in https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/metrics/metrics.py#L662, or else the following two if clauses will never get used.)