  ENH: add method='dense' to rank
This adds a `method='dense'` option to `rank` which does the same thing as the one in `scipy.stats.rankdata`: the first ranked group gets 1, the second 2, etc.  Basically it ports the approach used in `scipy.stats._rankdata_fused` to the pandas rankdata implementation.

It also adds a few tests that the various methods do what they're supposed to, which I couldn't find a test for before.

closes #6333

(1) The tests I couldn't find were lurking in `test_stats.py`, so I should add to those instead of tossing them in `test_series.py`.

(2) I'm not sure what I'm doing which is breaking everything -- the code passes every test for me.  Any obvious goofs I'm missing?
 nothing obvious....
 Ah, got it.   When I added `total_tie_count`, what was formerly `dups=0` became `dups, total_tie_count=0` and `dups` was no longer being initialized.  That explains why even the cases which shouldn't have been affected at all started breaking, and why my tests passed even though Travis was barfing.

It must have worked for me by fluke.  Will fix.
 Managed to get it working last night but got the branch into a weird inconsistent state.  Will make a new one instead.
