ENH: add a choice of methods for ranking ties in stats.rankdata

This PR adds the `method` argument to `stats.rankdata`, which allows you to choose one of five methods for handling ties.

Here is an example in which 10 appears twice and 30 appears three times.

    In [14]: a
    Out[14]: [20, 30, 50, 30, 40, 10, 30, 60, 10]

The default method is 'average', which preserves the existing API:

    In [15]: rankdata(a)
    Out[15]: array([ 3. ,  5. ,  8. ,  5. ,  7. ,  1.5,  5. ,  9. ,  1.5])
    
    In [16]: rankdata(a, method='average')
    Out[16]: array([ 3. ,  5. ,  8. ,  5. ,  7. ,  1.5,  5. ,  9. ,  1.5])

`method='min'` assigns the lowest ordinal rank of all the tied elements to all the elements in the tied group.
    
    In [17]: rankdata(a, method='min')
    Out[17]: array([ 3.,  4.,  8.,  4.,  7.,  1.,  4.,  9.,  1.])
    
`method='max'` assigns the highest ordinal rank of all the tied elements to all the elements in the tied group.

    In [18]: rankdata(a, method='max')
    Out[18]: array([ 3.,  6.,  8.,  6.,  7.,  2.,  6.,  9.,  2.])

`method='ordinal'` simply numbers all the elements from 1 to `a.size`.  Ranks are assigned to tied elements in the order in which they appear.
    
    In [19]: rankdata(a, method='ordinal')
    Out[19]: array([ 3.,  4.,  8.,  5.,  7.,  1.,  6.,  9.,  2.])

`method='dense'` assigns the same rank to each tied element, and when the elements in a group are assigned rank `k`, the next highest element is assigned rank `k+1`.

    In [20]: rankdata(a, method='dense')
    Out[20]: array([ 2.,  3.,  5.,  3.,  4.,  1.,  3.,  6.,  1.])