Groupby as index

closes #4648
closes #3417
closes #4649 (pr)

```
In [1]: df = pd.DataFrame([[1, 2], [2, 3], [1, 4], [1, 5], [2, 6]], index=list('abcde'))

In [2]: g = df.groupby(0, as_index=False)

In [3]: g.apply(lambda x: x)
Out[3]: 
   0  1
a  1  2
b  2  3
c  1  4
d  1  5
e  2  6

In [4]: g.head(2)
Out[4]: 
   0  1
a  1  2
c  1  4
b  2  3
e  2  6
```