BUG: groupby.rank with non-unique index groupers
groupby-with-rank and non-unique groupers, which include nan, raise
an odd error (the 2nd one), in reality this cannot reindex properly (which is really the error).
```
In [103]: df = DataFrame({'A': [1., 2., 3., np.nan], 'value': 1.}, index=[pd.Timestamp('20170101', tz='US/Eastern')] * 4)

In [104]: df.groupby([df.index, 'A']).value.rank(ascending=True, pct=True)     
ValueError: cannot reindex from a duplicate axis
AttributeError: 'SeriesGroupBy' object has no attribute '_aggregate_item_by_item'
```

but works when this is a column (and not an index)
````
In [105]: df.reset_index().groupby([df.index, 'A']).value.rank(ascending=True, pct=True)
Out[105]: 
0    1.0
1    1.0
2    1.0
3    NaN
Name: value, dtype: float64
```

so 2 interelated bugs here.

xref to #11759 